2015-02-02 2 views
2

Я создал диалог, который открывается каждый раз, когда приложение открывается пользователем. Поскольку это может раздражать пользователя очень быстро, я хочу открыть его при первом запуске приложения и только тогда.Диалоговое окно открывается, когда приложение запускается впервые

Я попробовал следующее:

public boolean openDialog = true; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    if (openDialog) { 
     launchDialog(); 
    } 
} 

private void launchDialog() { 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
      context); 

    // set title 
    alertDialogBuilder.setTitle("Your Title"); 

    // set dialog message 
    alertDialogBuilder 
      .setMessage("Click yes to exit!") 
      .setCancelable(false) 
      .setPositiveButton("Yes",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        //don't open Dialog by next launch 
        openDialog = false; 

        // if this button is clicked, close 
        // current activity 
        MainActivity.this.finish(); 
       } 
      }) 
      .setNegativeButton("No",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        // if this button is clicked, just close 
        // the dialog box and do nothing 
        dialog.cancel(); 
       } 
      }); 

    // create alert dialog 
    AlertDialog alertDialog = alertDialogBuilder.create(); 

    // show it 
    alertDialog.show(); 
} 

Спасибо за помощь

Адриан

+0

Ваш вопрос не дает понять, с чем вы столкнулись. Что именно это не работает так, как вы хотите? –

ответ

3

Вы можете использовать простые sharedPreferences:

private SharedPreferences mPrefs; 
private Editor mEditor; 

инициализацией:

mPrefs = PreferenceManager.getDefaultSharedPreferences(context); 
mEditor = mPrefs.edit(); 

тогда, когда диалог появился в первый раз, сохранить состояние, например:

mEditor.putBoolean(FIRST_TIME_USED_KEY,true); 
mEditor.commit(); 

И когда приложение будет открыт снова, сначала спросите, если диалог открыл перед:

boolean isUsedBefore = mPrefs.getBoolean(FIRST_TIME_USED_KEY,false); 

if(isUsedBefore==true){ 
    //do nothing 
}else{ 
    dialog.show(); 
    } 

FIRST_TIME_USED_KEY должен быть строкой, хранящейся в файле strings.xml.

0

сделать OpenDialog переменные как статические, чтобы быть на области видимости класса не экземпляры:

public static boolean openDialog = true; 

Для лучшего пользовательского опыта вы можете показать диалог:

1. каждый интервал времени (например: 2 дня).
2. каждое количество прогонов приложения (каждые 5 раз).

Вы можете сделать комбинацию этих двух факторов, вы можете сделать это, сохранив некоторые значения в настройках, используя класс shared preferences.

1

Существует несколько способов достижения этого.

Метод 1: Use of shared preference всякий раз, когда пользователь откроет в первый раз установить статус в общей предпочтения и проверять каждый раз, когда это необходимо, чтобы показать диалоговое окно или нет.

Примечание: @Opiatefuchs упоминает одно и то же.

Способ 2:

Use database. В первый раз обновите статус. В следующий раз проверьте базу данных, если диалог нужно показать или нет.

В основном оба метода работают аналогичным образом. Выберите свое лучшее.

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