Android中FragmentActivity中的DialogFragmentState丢失
我有一个FragmentActivity,这个类被子类化为各种活动,我在各种选项卡上显示这些活动,用户可以在这些选项卡之间切换。我也有一个服务在运行。在暂停状态下,我的应用程序继续工作,如果它连接到一个可编程设备,它将显示一个对话框。不是我得到的错误是非法状态异常。当FragmentActivity类调用该类时,会扩展DialogFragment **是否有办法在暂停状态下处理dialogfragment,并使其在设备处于暂停状态时不显示对话框?如果是这样的话,应该在FragementActivities的pause中完成还是在base fragement的onPause中完成*** 我将对话框显示为Android中FragmentActivity中的DialogFragmentState丢失,android,android-fragments,android-fragmentactivity,android-dialogfragment,Android,Android Fragments,Android Fragmentactivity,Android Dialogfragment,我有一个FragmentActivity,这个类被子类化为各种活动,我在各种选项卡上显示这些活动,用户可以在这些选项卡之间切换。我也有一个服务在运行。在暂停状态下,我的应用程序继续工作,如果它连接到一个可编程设备,它将显示一个对话框。不是我得到的错误是非法状态异常。当FragmentActivity类调用该类时,会扩展DialogFragment **是否有办法在暂停状态下处理dialogfragment,并使其在设备处于暂停状态时不显示对话框?如果是这样的话,应该在FragementActiv
protected void showDialog(int id, String title, String message) {
MyDialog confirmationDialog = MyDialog .newInstance(id,
title, message);
confirmationDialog.show(this.getFragmentManager(), null);
}
对话框类如下所示
MyDialog extends DialogFragment implements OnClickListener{
private int id = -1;
private String mDialogtitle;
private String mDialogMessage;
public static MyDialog newInstance(int id, String dialogTitle, String dialogMessage) {
MyDialog mDialog = new MyDialog();
Bundle bundle = new Bundle();
bundle.putString(MyApplication.getAppContext().getString(R.string.message), dialogMessage);
bundle.putString(MyApplication.getAppContext().getString(R.string.title), dialogTitle);
bundle.putInt(MyApplication.getAppContext().getString(R.string.dialogid), id);
mDialog .setArguments(bundle);
return mDialog ;
}
public AlertDialog onCreateDialog(Bundle savedInstanceState) {
mDialogtitle = getArguments().getString(getString(R.string.title));
mDialogMessage = getArguments().getString(getString(R.string.message));
id = getArguments().getInt(getString(R.string.dialogid));
switch (id) {
case DialogConstants.GENERAL_DIALOG_WITH_OK:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(mDialogtitle);
builder.setMessage(mDialogMessage)
.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dismiss();
}
});
return builder.create();
default:
return null;
}
}
@Override
public void onClick(View v) {
}
}
编辑:日志
04-06 11:26:42.747:E/AndroidRuntime16092:致命异常:主
04-06 11:26:42.747:E/AndroidRuntime16092:java.lang.IllegalStateException:在onSaveInstanceState之后无法执行此操作
04-06 11:26:42.747:E/AndroidRuntime16092:at android.app.FragmentManagerImpl.checkStateLossFragmentManager.java:1323
04-06 11:26:42.747:E/AndroidRuntime16092:at android.app.FragmentManagerImpl.enqueueActionFragmentManager.java:1341
04-06 11:26:42.747:E/AndroidRuntime16092:at android.app.backbackbackRecord.committernernalbackstackRecord.java:597
04-06 11:26:42.747:E/AndroidRuntime16092:at android.app.BackStackRecord.commitBackStackRecord.java:575
04-06 11:26:42.747:E/AndroidRuntime16092:at android.app.DialogFragment.showDialogFragment.java:230
04-06 11:26:42.747:E/AndroidRuntime16092:at MyFragementActivity.showDialogMyFragementActivity.java:593
04-06 11:26:42.747:E/AndroidRuntime16092:at MySubClass$5.handleMessageMySubClass.java:1974
04-06 11:26:42.747:E/AndroidRuntime16092:at android.os.Handler.dispatchMessageHandler.java:102
04-06 11:26:42.747:E/AndroidRuntime16092:at android.os.Looper.Looper.java:146
04-06 11:26:42.747:E/AndroidRuntime16092:at android.app.ActivityThread.mainActivityThread.java:5635
04-06 11:26:42.747:E/AndroidRuntime16092:at java.lang.reflect.Method.Invokenactive Method
04-06 11:26:42.747:E/AndroidRuntime16092:at java.lang.reflect.Method.invokeMethod.java:515
04-06 11:26:42.747:E/AndroidRuntime16092:com.android.internal.os.ZygoteInit$methodAndArgscaler.runZygoteInit.java:1291
04-06 11:26:42.747:E/AndroidRuntime16092:com.android.internal.os.ZygoteInit.mainZygoteInit.java:1107
04-06 11:26:42.747:E/AndroidRuntime16092:at dalvik.system.NativeStart.main本地方法
编辑:来自基本活动的调用
请发布您的日志Cat。您在哪里调用此方法showDialogint id、字符串标题、字符串消息?来自子类MySubClass之一
showDialog("OK",
getString(R.string.app_name),
"Device Connected.");