Android:检查首次启动

时间:2013-06-22 19:51:58

标签: android alertdialog

我制作了共享偏好系统,用于检查用户是否首次启动应用,如果是,则会启动 AlertDialog

    public boolean onCreateOptionsMenu(Menu menu){
    // Make MenuInflater
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    inflater.inflate(R.menu.main, menu);
    SharedPreferences settings = getSharedPreferences("prefs", 0);
    boolean firstRun = settings.getBoolean("firstRun", true);
    if ( firstRun )
    {
        AlertDialog.Builder ad = new AlertDialog.Builder(this);  
        ad.setTitle("Nieuwe gebruiker?");  
        ad.setMessage("- Als u naar de volgende dag wilt kun u de knop morgen gebruik in het menu.\n - In het menu kunt u ook terug naar vandaag en u kunt de pagina refreshen. \n - U kunt zelfs de roosterwijzigingen delen via WhatsApp of via E-Mail.");   
        ad.setNegativeButton("OK", new DialogInterface.OnClickListener() {  
           public void onClick(DialogInterface dialog, int id) {  
             dialog.dismiss(); 
        }  
        });  
        ad.show();
    }
// Return True
return true;
}

但我认为我没有做好,因为每次启动应用程序时都会启动AlertDialog 。我错了什么,我该如何解决?

3 个答案:

答案 0 :(得分:2)

将您的代码更改为

....
boolean firstRun = settings.getBoolean("firstRun", true);
if ( firstRun ){
  settings.edit().putBoolean("firstRun", false).commit(); //set your flag to false
....

答案 1 :(得分:1)

在显示对话框后,您不会将SharedPreferences中firstRun的值更改为false。

在AlertDialog的“确定”按钮中,将firstRun保存在SharedPreferences中,使其值为false,以便不再触发if语句。

答案 2 :(得分:1)

我做了类似的事情,我通过创建一个sqlite数据库来解决它,当第一次打开应用程序时,我检查数据库表是否为空如果是我做某事并且如果数据库中有数据则将数据插入数据库我什么都不做。