我对Android中的对话框感到困惑,需要一些建议。
一切都进展顺利。我在通过Navi Drawer打开的MainActivity中创建了许多对话框。使用如下代码创建的对话框非常简单:
private void exportDialog() {
LayoutInflater inflater = this.getLayoutInflater();
final View formElementsView = inflater.inflate(R.layout.export_data, null, false);
AlertDialog msgBox = new AlertDialog.Builder(this)
.setView(formElementsView).setTitle("Export Responses")
.setIcon(android.R.drawable.ic_menu_share)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Code...
}
})
.create();
msgBox.show();
}
但是当设备从锁定屏幕恢复时,我开始注意到问题。切换/暂停/恢复工作正常,但锁定的屏幕似乎杀死了活动上下文,当应用程序恢复时,对话框变得图形损坏,我在日志中收到“活动已泄漏窗口”错误消息。
所以,我又开始了。我将所有对话框移动到DialogFragment类中,这似乎是“正确”的方法。这消除了错误和图形故障。大!
但我无法弄清楚如何向MainActivity添加多个对话框侦听器。所以我得到了:
public class MainActivity extends Activity implements LogInDialog.NoticeDialogListener{
但我可以添加更多吗?
在我弄清楚如何做到这一点之前,我已经改变了许多MainActivity方法并将它们移动到相关的对话框类中,这些方法很好但似乎是一种相当线性的方法。如果MainActivity可以对每个对话框响应起作用,那就太好了。
正如你猜测的那样,我不是一个专业的开发人员,所以我很失落!
更新
好的,似乎是原始问题的图形故障和"泄漏的窗口"消息是因为对话框没有被正确解雇。添加以下内容似乎大大改善了问题:
@Override
public void onDestroy() {
super.onDestroy();
if (DialogBox1!=null){
DialogBox1.dismiss();
}
DialogBox1= null;
if (DialogBox2!=null){
DialogBox2.dismiss();
}
DialogBox2= null;
if (DialogBox3!=null){
DialogBox3.dismiss();
}
DialogBox3= null;
...
答案 0 :(得分:0)
使用实现LogInDialog.NoticeDialogListener
的内部类