0

情况是这样的。我在一个无法更改的长继承链的末端有一个活动子类。所以我不能让我的活动扩展FragmentActivity。我希望在发生旋转等情况时显示对话框而不泄漏它们。

谷歌主要建议(现已弃用)dismissDialog(int)。弃用消息建议使用片段进行对话。这是有道理的。但正如我所说,我无法扩展FragmentActivity,因此无法让片段管理器启动我的对话片段。我还针对 min sdk 9 并希望避免使用不推荐使用的方法。

我想到的一种解决方案是在虚拟 FragmentActivity 上调用 start 以显示我的 dialogFragment。但这似乎完全打败了对话的动力。

有没有希望?我可以以某种方式从非片段活动启动对话片段吗?我可以以不推荐的方式显示和关闭对话框吗?我错过了任何其他选择吗?

4

3 回答 3

1

好吧,我建议您修复所有问题并扩展 FragmentActivity。但无论如何,既然没有 a 就无法完成FragmentActivity,这里有一个解决方法

创建一个不可见的 FragmentActivity(使用半透明主题很容易)

  • 启动此活动以处理其中的对话框。
  • 当对话框被关闭时完成它。
于 2013-02-04T14:12:26.763 回答
0

我终于着手手动处理我的对话框。意思是:

Dialog currentdialog; // holds the current open dialog

@Override
protected void onSaveInstanceState (Bundle outState){
    super.onSaveInstanceState(outState);        
    ...
    if(currentdialog!=null){
        currentdialog.dismiss();
    }
}

public void makeDialog(){
    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    // set some of the dialog fields
    currentdialog = alert.create();        
    currentdialog.show();
}
于 2013-02-04T15:45:29.187 回答
0

它将起作用:

 CustomFieldsDialog customDialog = new    
 CustomFieldsDialog();                            
 customDialog.show(getActivity().getSupportFragmentManager(),    
 "CustomFieldsDialog");
于 2015-08-03T05:32:06.890 回答