Android 在onDestroy内创建对话框时出错:onSaveInstanceState之后无法执行此操作
我在杀死透明活动后(在顶部/onDestroy)有一个透明活动,我想创建对话框,但遇到错误:Android 在onDestroy内创建对话框时出错:onSaveInstanceState之后无法执行此操作,android,dialog,android-lifecycle,ondestroy,android-ondestroy,Android,Dialog,Android Lifecycle,Ondestroy,Android Ondestroy,我在杀死透明活动后(在顶部/onDestroy)有一个透明活动,我想创建对话框,但遇到错误: java.lang.RuntimeException: Unable to destroy activity {package name/myclass}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 孔代码如下所示: public class TransparentTip
java.lang.RuntimeException: Unable to destroy activity {package name/myclass}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
孔代码如下所示:
public class TransparentTip extends FragmentActivity {
Button ok;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.transparent_tip);
ok=(Button)findViewById(R.id.bToK);
}
public void buttonClick(View view) {
if (view.getId() == R.id.bToK)
{
finish();
overridePendingTransition(R.anim.abc_fade_in, R.anim.abc_fade_out);
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.abc_fade_in, R.anim.abc_fade_out);
}
@Override
protected void onDestroy()
{
super.onDestroy();
DialogChoiceActivity dialog = new DialogChoiceActivity();
dialog.show(getSupportFragmentManager(),"my_dialog");
}
}
p.S创建对话框是有效的,所以不需要在这里放置DialogChoicedActivity代码 您必须允许对话框的状态丢失,因为您正在销毁期间使用show。用这个
public static void showDialogAllowingStateLoss(FragmentManager fragmentManager, DialogFragment dialogFragment, String tag) {
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.add(dialogFragment, tag);
ft.commitAllowingStateLoss();
}
而不是dialog.show(getSupportFragmentManager(),“my_dialog”)代码>
使用commitAllowingStateLoss检查注意事项。我添加了您的函数并更改了我的对话框。在showDialogAllowingStateLoss上显示(getSupportFragmentManager(),对话框,“我的对话框”);现在,我遇到了如下错误:“无法销毁活动:java.lang.IllegalStateException:活动已被销毁”。您可以通过startActivityForResult()修复启动TransparentIP时出现的问题。然后在调用活动的onActivityResult回调中使用show()。