Android 在onDestroy内创建对话框时出错:onSaveInstanceState之后无法执行此操作

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

我在杀死透明活动后(在顶部/onDestroy)有一个透明活动,我想创建对话框,但遇到错误:

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()。