2016-02-18 5 views
0

Я начинающий как для Java, так и для Android Studio, поэтому здесь моя проблема: я создал диалоговое окно предупреждения для активности с положительной кнопкой «ОК», а отрицательная кнопка - «Нет благодарности». Как показано в приведенном ниже коде.Как изменить AlertDialog (Android)?

if(Times==0) { 
     AlertDialog.Builder builder1 = new AlertDialog.Builder(this); 
     builder1.setIcon(android.R.drawable.ic_dialog_alert); 
     builder1.setTitle("Warning"); 
     builder1.setMessage("Rooting of a phone may void your Warranty in most of the cases,so it is adviced to proceed at your own risk"); 
     builder1.setCancelable(true); 

     builder1.setPositiveButton(
       "OK", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         Times += 1; 
         dialog.cancel(); 
        } 
       }); 

     builder1.setNegativeButton(
       "No Thanks", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.cancel(); 

        } 
       }); 
} 

Это шло прекрасно, но теперь улов я хочу это будет отображаться только один раз, если пользователь нажимает на кнопку «OK», и не хочет, чтобы показать его снова, если пользователь нажал кнопку «OK». Я создал переменную times в моем классе и инициализировал ее равной нулю, как показано ниже.

public class rootingRooting extends AppCompatActivity { 

int Times=0; 

и поставить полный AlertDialog в, если петли и увеличивается его значение, когда пользователь нажимает кнопку «ОК», так что цикл может выполняться только один раз, если пользователь нажал кнопку «OK», но это не имеет смысла когда это Я открываю действие, когда окно предупреждения отображается при нажатии «ОК». Итак, теперь я хочу сделать следующее:

  1. Предупреждение не должно отображаться, если пользователь однажды нажал кнопку «ОК».

  2. Если пользователь нажал кнопку «Нет благодарности», я хочу отвести его на домашнюю работу. Итак, как я должен использовать намерение с помощью кнопки «нет благодарности»?

спасибо.

ответ

3

Чтобы сохранить данные настойчиво, вам необходимо использовать SharedPreferenes, а локальные переменные не помогут. :

EDIT Согласно вашему запросу, я добавил пример класса активности, чтобы показать весь процесс. Смотрите комментарии между для получения дополнительной информации

EDIT 2 Смотрите код после // Второй Редактировать комментарий

public class MainActivity extends AppCompatActivity { 
     SharedPreferences prefs; 
      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 
       //When the activity starts, we look into the shared prefs and get an int of name "ok_clicked" from it. 
       //0 will be the default value of the int if there is no int stored in sharedPreferences. 
       prefs = getSharedPreferences("myPrefs", MODE_PRIVATE); 
       int times = prefs.getInt("ok_clicked", 0); 
       //if the times value is 0, we will open the dialog, otherwise nothing happens 
       if (times==0){ 
        openDialog(); 
       } 
      } 
      //Read This comment First: We will create a Method, which create an alert Dialog. 
      private void openDialog(){ 
       AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
       dialog.setTitle("Test").setMessage("Lorem ipsum dolor"); 
       dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         //When OK button is clicked, an int with value of 1 will be saved in sharedPreferences. 
         prefs = getSharedPreferences("myPrefs", MODE_PRIVATE); 
         SharedPreferences.Editor editor = prefs.edit(); 
         editor.putInt("ok_clicked", 1); 
         editor.apply(); 
        } 
       }); 
       dialog.setNegativeButton("No Thanks", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
        //Second Edit: To open another acitivty on No Thanks Button 
        Intent intent = new Intent(MyActivity.this, HomeActivity.class);         
        startActivity(intent); 
        } 
       }); 
       dialog.show(); 
      } 
     } 
+0

Спасибо доктору Уилсону, но, будучи новичком в Java, а также андроида я просто не могу понять, где я должен был использовать то, что, как я ожидаю, будет немного более конкретным, честно говоря, это первое время, когда я слышу о sharedPreferences, и я немного попытался поместить первый блок после объявления моего класса и импортировал необходимые файлы, но stillit показывает как «не может разрешить символ putInt» или «не может разрешить применение символа». Спасибо. –

+0

Не ставьте первый bl ock после объявления активности, поместите его в OnClick вашей кнопки AlertDialog «ОК». И поставьте два других блока вместо вашего if (times == 0), когда вы вызываете AlertDialog – drWisdom

+0

Спасибо drWilson.I выяснил это, и теперь он работает, как я его принял, и еще одна вещь - вторая вопрос, который я задал сейчас, как я могу использовать намерение в кнопке «Нет спасибо», если пользователь щелкнет, он будет принимать их непосредственно на родину или в другую деятельность. Не могли бы вы также ответить на это также? –

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