我在活动上显示 DialogFragment 时遇到问题。我发现了很多关于这个问题的其他帖子,但我找不到解决方案。
这是我的活动:
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// check whether data connection is available
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo == null || !netInfo.isConnectedOrConnecting()) {
DataConnectionUnavailableDialog dialog = DataConnectionUnavailableDialog
.newInstance("R.string.connection_unavailable");
dialog.show(getFragmentManager(), "");
}
< other stuff >
}
< other stuff >
}
如您所见,我想在 Internet 连接不可用时显示一个对话框。
这是我的对话。
public class DataConnectionUnavailableDialog extends DialogFragment {
static DataConnectionUnavailableDialog newInstance(String title) {
DataConnectionUnavailableDialog f = new DataConnectionUnavailableDialog();
Bundle args = new Bundle();
args.putString("title", title);
f.setArguments(args);
return f;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.connection_unavailable).setPositiveButton(
R.string.open_connection, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
try {
< ... >
} catch (Exception e) {
throw new RuntimeException(e.toString());
}
}
}).setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
奇怪的是,几个月前,对话框出现了。然后我离开了这个项目,当我回到它时,经过一些其他的修改,我发现了这个问题。
我使用的是 4.0.3 Android。