片段对话框对活动的松散引用

Posted

技术标签:

【中文标题】片段对话框对活动的松散引用【英文标题】:FragmentDialog loose reference to activity 【发布时间】:2012-07-13 20:57:10 【问题描述】:

我正在使用支持库来创建使用片段的对话框。

我有以下代码来显示和关闭对话框:

@Override
public void onCreate(Bundle savedInstanceState) 
    Log.d("Create", "Create");
    setContentView(R.layout.activity_report);
    init();
    addListeners();
    addhandlerListener();
    super.onCreate(savedInstanceState);


private void showDialog(final Class<?> classs) 
    if (classs.equals(AddressValidateProgress.class)) 
        addressValidateProgress = AddressValidateProgress.newInstance();
        addressValidateProgress.show(getSupportFragmentManager(), null);
        Log.d("counter", "+1");
    
    if (classs.equals(GPSSearchProgress.class)) 
        showDialog(gpsSearchloadId);
    


private void dismissDialog(final Class<?> classs) 
    if (classs.equals(AddressValidateProgress.class)) 
        FragmentTransaction ft = getSupportFragmentManager()
                .beginTransaction();
        ft.remove(addressValidateProgress).commitAllowingStateLoss();
        addressValidateProgress = null;
        Log.d("super", addressValidateProgressId + ":dismissed");
    
    if (classs.equals(AddressChooseDialog.class)) 
        FragmentTransaction ft = getSupportFragmentManager()
                .beginTransaction();
        ft.remove(addressChooseDialog).commitAllowingStateLoss();
        addressChooseDialog = null;
    
    if (classs.equals(GPSSearchProgress.class)) 
        dismissDialog(gpsSearchloadId);
        Log.d("super", gpsSearchloadId + ":dismissed");
    

如果我以纵向模式启动应用程序,我可以正常使用对话框,我什至可以旋转屏幕并重建对话框。 问题是,如果我启动应用程序旋转屏幕并单击打开对话框的按钮,我会得到一个异常:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

【问题讨论】:

【参考方案1】:

找到解决方案。

这是由声明的静态处理程序引起的

【讨论】:

以上是关于片段对话框对活动的松散引用的主要内容,如果未能解决你的问题,请参考以下文章

将片段显示为对话框或常规活动

在片段活动中显示自定义对话框

活动在片段上出现的权限对话框中被破坏

活动中自定义对话框内的 ANDROID 片段

如何从另一个活动或底部工作表对话框/片段中关闭一个活动

将字符串从对话框片段返回到活动 [重复]