情况就是这样。我在长继承链的末尾有一个活动的子类,我无法改变。所以我不能让我的活动扩展FragmentActivity
。我想在旋转等情况下显示对话框而不会泄漏它们。
Google主要建议(现已弃用)dismissDialog(int)。弃用消息建议使用片段进行对话。这是有道理的。但正如我所说,我无法扩展FragmentActivity
因此无法让fragmet管理器启动我的对话框片段。我也瞄准min sdk 9,并且希望避免使用弃用的方法。
我想到的一个解决方案是在虚拟FragmentActivity上调用start for result来显示我的dialogFragment。但这似乎完全击败了对话框。
有任何希望吗?我可以以某种方式从非片段活动中启动对话框片段吗?我可以以非弃用的方式显示和删除对话框吗?我错过了任何其他选择吗?
答案 0 :(得分:1)
我会建议你修复所有内容并扩展FragmentActivity。但无论如何,如果没有FragmentActivity
就无法完成,这里有一个解决方法
创建一个不可见的FragmentActivity(使用半透明主题非常简单)
答案 1 :(得分: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();
}
答案 2 :(得分:0)
它会起作用:
last_name