{"id":730,"date":"2023-02-26T15:40:01","date_gmt":"2023-02-26T07:40:01","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=730"},"modified":"2023-04-29T17:11:01","modified_gmt":"2023-04-29T09:11:01","slug":"dialogfragment-call-show-and-report-can-not-perform-this-action-after-onsaveinstancestate","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/02\/26\/dialogfragment-call-show-and-report-can-not-perform-this-action-after-onsaveinstancestate\/","title":{"rendered":"DialogFragment\u8c03\u7528show()\u62a5Can not perform this action after onSaveInstanceState\u7684\u89e3\u51b3\u529e\u6cd5"},"content":{"rendered":"<h2>\u53c2\u8003\u6587\u7ae0<\/h2>\n<ul>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/blog.csdn.net\/fengchengwu2012\/article\/details\/79419641\" title=\"\u4f7f\u7528\u81ea\u5b9a\u4e49DialogFragment\u51fa\u73b0IllegalStateException: Can not perform this action after onSaveInstanceState\u5f02\u5e38\">\u4f7f\u7528\u81ea\u5b9a\u4e49DialogFragment\u51fa\u73b0IllegalStateException: Can not perform this action after onSaveInstanceState\u5f02\u5e38<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/blog.csdn.net\/chenshufei2\/article\/details\/48747149\" title=\"Fragment Or DialogFragment Can not perform this action after onSaveInstanceState\">Fragment Or DialogFragment Can not perform this action after onSaveInstanceState<\/a><\/li>\n<\/ul>\n<p><!-- more --><\/p>\n<h2>\u89e3\u51b3\u529e\u6cd5\u4e00<\/h2>\n<p>\u5728<code>PromptDialogFragment<\/code>\u4e2d\u91cd\u5199<code>show()<\/code>\u548c<code>dismiss()<\/code>\u65b9\u6cd5<\/p>\n<pre><code class=\"language-java\">@Override\npublic void show(FragmentManager manager, String tag) {\n    \/\/super.show(manager, tag);\n    try {\n        Class c = Class.forName(&quot;androidx.fragment.app.DialogFragment&quot;);\n        Field dismissed = c.getDeclaredField(&quot;mDismissed&quot;);\n        dismissed.setAccessible(true);\n        dismissed.set(obj, false);\n        Field shownByMe = c.getDeclaredField(&quot;mShownByMe&quot;);\n        shownByMe.setAccessible(true);\n        shownByMe.set(obj, false);\n    } catch (Exception e) {\n        NLog.e(Constants.TAG, Log.getStackTraceString(e));\n    }\n    FragmentTransaction ft = manager.beginTransaction();\n    ft.add(this, tag);\n    ft.commitAllowingStateLoss();\n}\n\n@Override\npublic void dismiss() {\n    \/\/super.dismiss();\n    dismissAllowingStateLoss();\n}<\/code><\/pre>\n<h2>\u89e3\u51b3\u65b9\u6cd5\u4e8c<\/h2>\n<p>\uff081\uff09\u81ea\u5efa\u5305<code>androidx.fragment.app<\/code>\uff0c\u5e76\u5728\u5305\u4e0b\u65b0\u5efa\u7c7b<code>MyDialogFragment<\/code>\u7ee7\u627f<code>DialogFragment<\/code><\/p>\n<pre><code class=\"language-java\">package androidx.fragment.app;\n\npublic class MyDialogFragment extends DialogFragment {\n\n    public boolean getDismissed() {\n        return mDismissed;\n    }\n\n    public void setDismissed(boolean dismissed) {\n        this.mDismissed = dismissed;\n    }\n\n    public boolean getShownByMe() {\n        return mShownByMe;\n    }\n\n    public void setShownByMe(boolean shownByMe) {\n        this.mShownByMe = shownByMe;\n    }\n}<\/code><\/pre>\n<p>\uff082\uff09\u5728<code>PromptDialogFragment<\/code>\u4e2d\u91cd\u5199<code>show()<\/code>\u548c<code>dismiss()<\/code>\u65b9\u6cd5<\/p>\n<pre><code class=\"language-java\">public class LoginPromptDialogFragment extends MyDialogFragment\n\n    ...\n\n    @Override\n    public void show(FragmentManager manager, String tag) {\n        setDismissed(false);\n        setShownByMe(false);\n        FragmentTransaction ft = manager.beginTransaction();\n        ft.add(this, tag);\n        ft.commitAllowingStateLoss();\n    }\n\n    @Override\n    public void dismiss() {\n        \/\/super.dismiss();\n        dismissAllowingStateLoss();\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u53c2\u8003\u6587\u7ae0 \u4f7f\u7528\u81ea\u5b9a\u4e49DialogFragment\u51fa\u73b0IllegalStateException: Can no [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[119],"tags":[216],"class_list":["post-730","post","type-post","status-publish","format-standard","hentry","category-android-ui","tag-dialogfragment"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=730"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/730\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}