2013-09-16 57 views
0

我已经在这里看到了这个主题,但似乎无法理解如何继续。Android在AlertDialog上等待用户输入继续

在我的onCreate我有代码,检查它是否是第一次运行的应用程序firstRun = getPref.getBoolean("firstRun", true);。如果第一次运行该应用程序,将显示一个警告对话框,并显示一条消息,指出没有安装数据库,并且用户按下了按钮OK以下载数据库。如果没有比pref.putBoolean("firstRun", false);和alertdialog更多的错误,它将在下次运行时不显示。

现在我想介绍一下ChangeLog,它只在应用程序安装或升级后的第一次运行中显示。由于更改日志必须位于firstRun检查之前,因此我应该等待用户按下更改日志alertdialog OK按钮。

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

所以,这是我的问题。

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

回答

2

我的理解是,changeLog将运行应用程序的每一次运行。因此,您可以覆盖changeLog AlertDialogonDismiss()。然后只是把你的代码firstRun检查

@Override 
public void onDismiss(DialogInterface dialog) 
{ 
    // firstRun Check 
    // call function to run AlertDialog code for first check if firstRun == true else close dialog 
} 
+0

谢谢。这就是我一直在寻找的东西。 – Favolas

0

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

if(isChengelog){ 
    //Show firstRun Aleret dialog 
} 
else{ 
//Not Show firstRun Aleret dialog 
} 
0

穆克什类似建议,但也把这个在你的回调为你更新日志对话框。

// 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 
    } 
} 

请务必包括在启动时穆克什的建议:

if(getPref.getBoolean("changelog", true);){ 
    //Show changelog dialog 
} 
else{ 
    showFirstRunDialog(); 
}