2015-11-25 3 views
0

Я создаю приложение для Android, содержащее кнопку переключения. Я хочу сохранить состояние переключателя. И он отлично работает. Если я выйду из togglebutton ON и снова вернусь к приложению, то переключатель будет сохранять свое состояние, чего я хочу. Но проблема в том, что если я оставлю приложение так долго, как более 2 часов, состояние togglebutton не будет сохранено. Оно устанавливает состояние по умолчанию. В любом случае, чтобы исправить это? и да, я новичок в андроид :)Android ToggleButton Состояние сбрасывается после долгого времени

Heres мой код

public static Bundle bundle=new Bundle(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_page3); 
onoff = (ToggleButton) findViewById(R.id.toggleButton); 
onoff.setChecked(false); 
onoff.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
{ 
    if (isChecked && !bundle.getBoolean("ToggleButtonState",false)) 
    { 
    //do some tasks 
    } else if(!isChecked) { 
    //do some tasks 
    } 




    @Override 
public void onPause() { 
    super.onPause(); 
    bundle.putBoolean("ToggleButtonState", onoff.isChecked()); 
} 
@Override 
public void onResume(){ 
    super.onResume(); 
    if(bundle.getBoolean("ToggleButtonState",false)) 
    { 
     onoff.setChecked(true); 

    } 
} 
+0

пожалуйста показать код – csenga

+0

я отредактировал мой вопрос. heres код –

+0

где переменная расслоения, которая используется в onPause объявлена? – csenga

ответ

1

Общие предпочтения могут быть использованы this путь. Если ваше приложение закрыто и открыто снова, ваш объект связки воссоздается, сбрасывается. Если приложение не используется какое-то время или система нуждается в большем количестве ресурсов, ваше приложение может быть убито, поэтому ваше приложение закрыто.

Код:

private ToggleButton mTb; 
    private SharedPreferences mSharedPref; 
    private final String mPrefKey="toogle"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mTb= (ToggleButton) findViewById(R.id.toggleButton); // get ref for the toggle 
     mSharedPref = getPreferences(Context.MODE_PRIVATE); // init the sharedPreference 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     // if the activty resumes set the toggle state 
     boolean enabled = mSharedPref.getBoolean(mPrefKey,false); // if no value found then set it off, in this case this can happen first 
     mTb.setChecked(enabled); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     // if the activty closed etc..... 
     SharedPreferences.Editor editor = mSharedPref.edit(); // get the pref editor 
     editor.putBoolean(mPrefKey,mTb.isChecked()); // assign value to the key 
     editor.commit(); // save the editors modifications 
    } 
+0

, поэтому я должен использовать общие предпочтения? –

+0

Да, вы должны использовать его. – csenga

+0

большое спасибо. Я попробую. –

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