0

我已经看到这里讨论过这个主题,但似乎无法理解如何进行。

在我onCreate的代码中,它检查它是否是应用程序的第一次运行firstRun = getPref.getBoolean("firstRun", true);。如果它是第一次运行该应用程序,则会显示一个警报对话框,并显示一条消息,说明没有安装数据库,并且用户按下OK按钮下载数据库。如果没有错误pref.putBoolean("firstRun", false);,则警报对话框不会在下一次运行中显示。

现在我想介绍一个ChangeLog它只在应用程序安装或升级后的第一次运行时显示。由于更改日志必须在firstRun检查之前出现,我应该等待用户按下更改日志警报对话框OK按钮。

我已经为更改日志创建了代码(它按预期工作),在该代码之后,我有了firstRun. 问题是显示了更改日志,但是如果它实际上是应用程序的第一次运行,则firstRun警报对话框与更改日志警报对话框重叠。

所以,这是我的问题。

什么是最好的等待继续,以便firstRun代码仅在用户按下OK更改日志警报对话框上的按钮后执行?

4

3 回答 3

2

我的理解是,changeLog该应用程序的每次首次运行都会运行。所以你可以覆盖onDismiss()你的changeLog AlertDialog. 然后只需输入您的代码进行firstRun检查

@Override
public void onDismiss(DialogInterface dialog)
{
    // firstRun Check
    // call function to run AlertDialog code for first check if firstRun == true else close dialog
}
于 2013-09-16T15:16:39.140 回答
0

取另一个布尔变量isChengelog 并将其初始设置为 false,当用户单击ChangeLog对话框时将其设置为 true 并将其保存在首选项中。进一步进行代码检查

if(isChengelog){
  //Show firstRun Aleret dialog
} 
else{
 //Not Show firstRun Aleret dialog
}
于 2013-09-16T15:00:11.527 回答
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();
}
于 2013-09-16T15:13:40.017 回答