2012-09-08 13 views
1
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.some_layout); 
    toggleButton=(ToggleButton) findViewById(R.id.toggleButton1); 
} 
@Override 
public void onSaveInstanceState(Bundle save) { 
    super.onSaveInstanceState(save); 
    save.putBoolean("ToggleButtonState", toggleButton.isChecked()); 
} 
@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    toggleButton.setChecked(savedInstanceState.getBoolean("ToggleButtonState",false); 
} 

保留切換按鈕狀態時,它看起來像它應該工作,但如果我做到以下幾點:我的活動

  1. 其圖標的應用程序菜單
  2. 檢查切換按鈕
  3. 上運行我的應用程序
  4. 按後退按鈕
  5. 從它的圖標再次激活我的應用程序
回到主屏幕

我看不到我的切換按鈕,爲什麼這樣呢?我如何克服這一點?

+0

你怎麼回去到你的主屏幕?按下返回按鈕或按回家按鈕。 – VendettaDroid

+0

按主頁按鈕 –

+0

其實它具有相同的效果,所以... –

回答

4

我錯過了什麼保存和恢復方法是,但要實現我一直在尋找我的功能做了以下內容:

public class MainActivity extends Activity { 

    private ToggleButton toggleButton; 
    private static Bundle bundle = new Bundle(); 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     toggleButton = (ToggleButton)findViewById(R.id.toggleButton1); 
    } 



    @Override 
    public void onPause() { 
     super.onPause(); 
     bundle.putBoolean("ToggleButtonState", toggleButton.isChecked()); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     toggleButton.setChecked(bundle.getBoolean("ToggleButtonState",false)); 
    } 
} 
+0

好像你已經想通了。 +1。 – VendettaDroid

+0

想知道爲什麼它工作?請參閱[在何時調用onRestoreInstanceState]時的答案(http://stackoverflow.com/a/26190904/4188683) – Eido95

0

這是我的代碼

package com.example.stackoverflow; 



import android.app.Activity; 
import android.os.Bundle; 

import android.widget.ToggleButton; 

public class MainActivity extends Activity { 
    ToggleButton toggleButton; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     toggleButton = (ToggleButton)findViewById(R.id.toggleButton1); 
    } 

    @Override 
    public void onSaveInstanceState(Bundle save) { 
     super.onSaveInstanceState(save); 
     save.putBoolean("ToggleButtonState", toggleButton.isChecked()); 
    } 

    @Override 
    public void onRestoreInstanceState(Bundle savedInstanceState) { 
     super.onRestoreInstanceState(savedInstanceState); 
     toggleButton.setChecked(savedInstanceState.getBoolean("ToggleButtonState",false)); 
    } 
} 
+0

它不能在我的銀河s3上工作 - 給出相同的結果 –

+0

讓我測試我的s3 ...我在星系連線上測試 – VendettaDroid

+0

它在星系s3上也能正常工作。 – VendettaDroid