2014-01-06 3 views
0

Я делаю приложение, которое меняет цвета фона, но то, что я хочу сделать теперь, это использовать alertDialog и мою проблему, так это то, что когда я меняю экран, это не сохраняет последнее изменение, появляется предупреждениеDialog еще раз. Я использую это, но я не знаю, если я делаю правильно ... Я использую getPreferences, потому что мне нужно, чтобы получить мою деятельность по умолчанию SharedPreferencesДиалог оповещений с предпочтениями

//  SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
//  int storedPreference = preferences.getInt("storedInt", 0); 
//  SharedPreferences.Editor editor = preferences.edit(); 
//  editor.putInt("storedInt", storedPreference); 
//  editor.commit(); 

     new AlertDialog.Builder(this) 
     .setTitle("Alert Dialog") 
     .setMessage("Startup Button Visibility:") 
     .setPositiveButton("Hidden", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       if(buttonVisible == true) 
       { 
        myLayout2.setVisibility(View.INVISIBLE); 
       } 
       else 
        myLayout2.setVisibility(View.VISIBLE); 
//    Toast.makeText(getApplicationContext(), "Hidden was clicked", Toast.LENGTH_LONG).show(); 
//    // continue with delete 
      } 
     }) 

     .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       // do nothing 
      } 
     }) 

     .setNeutralButton("Visible", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 
      } 
     }) 

     /** 
      * Showing alert dialog 
      */ 

     .show(); 
+0

что вы хотите точно? почему вы сначала получаете Скрытый и снова устанавливаете после этого без каких-либо изменений? –

+0

Я уже сделал приложение, которое меняет цвет фона после нажатия кнопки, и с щелчком на экране также могут появляться и исчезать кнопки, и теперь я использую alertDialog, который запустит режим (видимые, скрытые кнопки или отменить), но моя проблема возникает после того, как я нажал, например: «Скрытый», он работает, но если я изменил ориентацию, снова появится alertDialog:/ – jaimito

+0

Если вы измените ориентацию своего устройства, вы снова заново создаете свою активность. Вы можете использовать переменную, чтобы сказать, закончилось ли диалоговое окно так, как вы хотели, и сохраните эту переменную с помощью 'onsaveInstanceState' и восстановите ее в своем' onRestoreInstance' или 'onCreate', используя ваш класс' Bundle', если ваша переменная определена в 'Bundle' со значением, которое вы ранее определили, тогда вы не увидите диалог. – zozelfelfo

ответ

0

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

android:configChanges="orientation|screenSize" 

Изменение ориентации воссоздает активность.

+0

Да, это то, что я хочу сделать, но Мне нужно использовать onSaveInstance – jaimito

0

Проблема заключается в том, что каждый раз, когда вы меняете ориентацию, каждый раз вызывается обращение к CreateCoate(), но вы можете избежать повторного создания Activity, добавив атрибут configChanges Activity в ваш файл AndroidManifest в теге активности.

андроида: configChanges = «keyboardHidden | ориентация»

0

при изменении ориентируют на экране следующее событие было произошло.

=== Ориентация Изменение ===

onSaveInstanceState -> OnPause -> OnStop -> OnCreate -> OnStart -> onRestoreInstanceState -> onResume.

поэтому, когда вы хотите сохранить состояние, вы можете использовать onSaveInstanceState(). и обычно вы восстанавливаете свое состояние в onCreate().

protected void onSaveInstanceState(Bundle icicle) { 
    super.onSaveInstanceState(icicle); 
    icicle.putString("param", value); 
} 

и восстановления, что:

public void onCreate(Bundle icicle) { 
    if (icicle != null){ 
    value = icicle.getString("param"); 
    } 
} 

так что вы можете сохранить значение цвета или что-нибудь, что вы хотите, и восстановить, что в onCreate() и задать вам AlertDialog.

+0

Можете ли вы опубликовать Редактированный код, я не понимаю, что вы сказали –

+0

Я обновил весь свой код ... заранее заблаговременно – jaimito

+0

В чем проблема? вы видели ошибку? –

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