2015-07-27 3 views
-1

Я хочу использовать значение общих предпочтений от одного действия к другому действию, например, если мой контакт от pin_activity установлен, шаблон из другого действия должен быть отключен и показать Toast, что «PinService включен , Вы не можете сделать PatternService включенным »и наоборот. Я не понимаю, как использовать общие значения предпочтений. Пожалуйста, помогите мне в этомОбщие значения предпочтений

вот мой код для обоих видов деятельности.

pin_activity.java 

    s2 = (Switch) findViewById(R.id.switch2); 


    spref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    s2.setChecked(spref.getBoolean("SwitchButton", false)); 


    s2.setOnClickListener(new ToggleButton.OnClickListener() { 

     public void onClick(View v) { 

      SharedPreferences.Editor editor = spref.edit(); 
      editor.putBoolean("SwitchButton", s2.isChecked()); 
      // editor.putString("switch_state", "value"); 
      //switch_state=editor.putBoolean("SwitchButton", s2.isChecked()); 
      editor.commit(); 
      // Toast.makeText(getApplicationContext(), "Switch is ON", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

Pattern_activity.java

SharedPreferences sharedPreferences = PreferenceManager 
      .getDefaultSharedPreferences(getApplicationContext()); 
    s1.setChecked(sharedPreferences.getBoolean("toggleButton", false)); 
    switch1= sharedPreferences.getBoolean("editor",s1.isChecked()); 
    if (switch1== true) 
    { 
     s1.setEnabled(false); 
     Toast.makeText(getApplicationContext(), "PinService is ON, You can't Make PatternService ON", Toast.LENGTH_SHORT).show(); 
    } 
    else 
    { 
     s1.setEnabled(true); 
    } 



    s1.setOnClickListener(new ToggleButton.OnClickListener() { 

     public void onClick(View v) { 
      SharedPreferences sharedPreferences = PreferenceManager 
        .getDefaultSharedPreferences(getApplicationContext()); 
      SharedPreferences.Editor editor = sharedPreferences.edit(); 

      //switch1= sharedPreferences.getString("switch_state", null); 
      editor.commit(); 
      // Toast.makeText(getApplicationContext(), "Switch is ON", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
+0

Вы всегда можете использовать класс поддержки для получения и установки значений для общих настроек, всегда проще, так или иначе –

+0

http://stackoverflow.com/questions/9596851/how-to-use-shared-preference-data-in- разные классы-в-андроиде –

ответ

1

Вы должны использовать один и тот же ключ для настройки.

В вашем примере вы используете «SwitchButton» для чтения/записи состояния переключателя в pin_activity и «editor» для чтения (предположительно) того же значения. Что не может работать.

Итак, извлеките ключевую строку в константу, например public static String PIN_STATE = "PIN_STATE";.

в pin_activity:

s2 = (Switch) findViewById(R.id.switch2); 


    spref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    s2.setChecked(spref.getBoolean(PIN_STATE, false)); 


    s2.setOnClickListener(new ToggleButton.OnClickListener() { 

     public void onClick(View v) { 

      SharedPreferences.Editor editor = spref.edit(); 
      editor.putBoolean(PIN_STATE, s2.isChecked()); 
      // editor.putString("switch_state", "value"); 
      //switch_state=editor.putBoolean(PIN_STATE, s2.isChecked()); 
      editor.commit(); 
      // Toast.makeText(getApplicationContext(), "Switch is ON", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

в Pattern_activity:

SharedPreferences sharedPreferences = PreferenceManager 
      .getDefaultSharedPreferences(getApplicationContext()); 
    s1.setChecked(sharedPreferences.getBoolean("toggleButton", false)); 
    switch1= sharedPreferences.getBoolean(PIN_STATE, s1.isChecked()); 
    if (switch1== true) 
    { 
     s1.setEnabled(false); 
     Toast.makeText(getApplicationContext(), "PinService is ON, You can't Make PatternService ON", Toast.LENGTH_SHORT).show(); 
    } 
    else 
    { 
     s1.setEnabled(true); 
    } 

И от того, на вы, вероятно, нужно сделать что-то подобное для PATTERN_STATE и вообще выправить вы состояния кнопки, так как они кажутся бит смешался.

+0

спасибо, что это сработало :) – Sam

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