2015-11-30 28 views
1

這是我的問題。 enter image description here如何在對話框中保持開關設置?

這是我的代碼:

dialog = new Dialog(FragmentOne.super.getActivity(),R.style.selectorDialog); 
dialog.setContentView(R.layout.dialog_mod); 
     Switch switch1 = (Switch) dialog.findViewById(R.id.switch1); 
        switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
         @Override 
         public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
          if (isChecked) { 
           try { 
           } catch (IOException e) { 
            e.printStackTrace(); 
           } catch (XmlPullParserException e) { 
            e.printStackTrace(); 
           } 
          } else { 
           try { 
           } catch (IOException e) { 
            e.printStackTrace(); 
           } catch (XmlPullParserException e) { 
            e.printStackTrace(); 
           } 
          } 
         } 
        }); 
dialog.show(); 

交換機2和交換機3是相同的代碼,交換機1,所以我通過這個部分。 當我再次打開時,它又被複位。 任何人都知道如何解決這個問題?

+0

你必須拯救之開關的'狀態類似的地方'sharedPreferences'。然後從偏好中獲取值並相對於該值更新狀態。 – Wizard

+0

使用switch1.s​​etChecked(true); – Avi

+0

檢查你的問題的答案 – Androider

回答

1

而切換你的控制儘量保持你的價值在你的喜好這樣

switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     storeValue("switch1",isChecked); 

    } 
}); 
private void storeValue(String key,Boolean status) { 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putBoolean(key, status); 
     editor.commit(); 

} 
private boolean getValue(String key) { 
     SharedPreferences myPrefs; 
     myPrefs= getSharedPreferences("myprefs", Context.MODE_PRIVATE); 
     return myPrefs.getBoolean(key,false); 
} 

在對話上創建方法

public class yourDialogFragment extends DialogFragment { 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

      //do your logic here like switch on etc 
    switch1.setChecked(getValue("switch1")); 
     // switch2.setChecked(getValue("switch2")); so on.. 
     // Create the AlertDialog object and return it 
     return builder.create(); 
    } 
} 
+0

謝謝你的解決方案! –

+0

如果是你的答案接受這個 –

1
  1. 你必須保存在共享開關狀態值優先。

  2. 然後每當像setContentView()之前創建對話框時檢索這些值。

  3. 然後通過switch.setChecked()方法相應地設置開關狀態。

對於共享偏好儲蓄值:

if (switch1.isChecked()) 
    { 
     SharedPreferences.Editor editor = getSharedPreferences("com.example.abc", MODE_PRIVATE).edit(); 
     editor.putBoolean("switch1", true); 
     editor.commit(); 
    } 
    else 
    { 
     SharedPreferences.Editor editor = getSharedPreferences("com.example.abc", MODE_PRIVATE).edit(); 
     editor.putBoolean("switch1", false); 
     editor.commit(); 
    } 

對於從共享偏好檢索值:

SharedPreferences sharedPrefs = getSharedPreferences("com.example.abc", MODE_PRIVATE); 
    toggle.setChecked(sharedPrefs.getBoolean("switch1", true)); 
+0

謝謝你!它的工作! –

+0

@Felix,我的榮幸。 – Androider

相關問題