2013-06-22 5 views
0

я сделал систему с Shared Preferences, которая будет проверять, если пользователь запускает приложение в первый раз, если это так, то запустит AlertDialogAndroid: Проверьте первый раз запуск

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 каждый раз, когда вы запускаете приложение. Что я сделал не так и как это решить?

ответ

2

Изменить код

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

Вы не меняете значение firstRun в SharedPreferences на false после того, как вы показали диалог.

В кнопке OK AlertDialog сохраните firstRun в SharedPreferences, чтобы иметь значение false, так что оператор if не запускается снова.

1

я сделал что-то подобное, и я решил ее путем создания SQLite базы данных, в которой, когда приложение впервые открыл мне проверить, если таблица базы данных будет пустым, если это я что-то и вставлять данные в базу данных, если в базе данных нет данных, я ничего не делаю.

Смежные вопросы