我已经在这里讨论过这个问题,但似乎无法理解如何继续。
在我的onCreate
中,我有代码检查它是否是应用程序firstRun = getPref.getBoolean("firstRun", true);
的第一次运行。如果是第一次运行应用程序,则会显示一个警告对话框,其中显示没有安装数据库,用户按下OK
按钮下载数据库。如果没有错误而不是pref.putBoolean("firstRun", false);
和alertdialog,则下次运行时不会显示错误。
现在我想介绍一个ChangeLog
,它只在安装或升级应用程序后的第一次运行时显示。由于更改日志必须在firstRun
检查之前,我应该等待用户按下changelog alertdialog OK
按钮。
我已经为changelog创建了代码(它按预期工作),在那段代码之后,我有firstRun
的代码。问题是显示了更改日志,但是,如果它实际上是应用程序的第一次运行,则firstRun
alertdialog与changelog alertdialog重叠。
所以,这是我的问题。
最好等待什么才能使firstRun
代码仅在用户按下changelog alertdialog上的OK
按钮后执行?
答案 0 :(得分:2)
据我所知,changeLog
将在应用的每次首次运行时运行。因此,您可以覆盖onDismiss()
的{{1}}。然后只需将代码放入changeLog AlertDialog
检查
firstRun
答案 1 :(得分:0)
取另一个布尔变量isChengelog
并将其设置为false,当用户单击ChangeLog
对话框时将其设置为true并将其保存在首选项中。进一步的代码检查
if(isChengelog){
//Show firstRun Aleret dialog
}
else{
//Not Show firstRun Aleret dialog
}
答案 2 :(得分:0)
像Mukesh建议的那样,但也将其放在你的更改日志对话框的回调中。
// On "OK clicked"
public void onClick(DialogInterface dialog, int id){
pref.putBoolean("changelog", false);
showFirstRunDialog();
}
定义一个便利功能以显示第一个运行对话框:
public void showFirstRunDialog(){
if(getPref.getBoolean("firstRun", true);) {
//show dialog
}
}
确保包括Mukesh关于启动的建议:
if(getPref.getBoolean("changelog", true);){
//Show changelog dialog
}
else{
showFirstRunDialog();
}