簡體   English   中英

具有首選項的警報對話框

[英]Alert Dialog with preferences

我正在做一個更改背景顏色的應用程序,但是現在我想做的是使用alertDialog,而我的問題是,當我更改屏幕時,它沒有保存最后的更改,因此再次顯示alertDialog。 我正在使用它,但是我不知道我做的是否正確...我正在使用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();

根據您對問題的評論。 即使您更改了活動的方向,您似乎仍希望保留其活動狀態。 將此添加到活動括號內的清單中。

android:configChanges="orientation|screenSize"

更改方向會重新創建活動。

問題是,當您每次更改方向時都會調用onCreate(),但是您可以通過在Activity標簽中的AndroidManifest文件中添加Activity的configChanges屬性來避免重新創建Activity。

android:configChanges =“ keyboardHidden | orientation”

當您更改屏幕的方向時,發生了以下事件。

===方向改變===

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");
  }
}

因此,您可以保存Color值或任何所需的值,然后將其恢復到onCreate()並設置為AlertDialog

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM