2013-08-30 24 views
1

我有一個應用程序,我正在開發一個可以更改我的主要活動的圖像背景的radioButton組。它在一個我無法解決的問題上運行良好。設置帶單選按鈕的窗口背景

在我切換屏幕或重新啓動應用後,背景始終默認回到全息背景。單選按鈕設置爲可以通過選擇器xml正確按壓,圖像 完美切換,但不會粘住。如何在不重新創建每個屏幕上的單選按鈕的情況下將所有類傳播?

這裏是我的單選按鈕

public class MainActivity extends Activity { 

private final String TAG = "Main Activity"; 

Button rButton2; 
Button rButton1; 
Button rButton; 
Button mButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);    
     final RelativeLayout ll=(RelativeLayout) findViewById(R.id.RelativeLayout); 
     rButton2 = (Button) findViewById(R.id.radio2); 
     rButton1 = (Button) findViewById(R.id.radio0); 
     rButton = (Button) findViewById(R.id.radio1); 
     rButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       Log.i(TAG, "onStart"); 
       ll.setBackgroundResource(R.drawable.background1); 
      } 
     }); 

     rButton1.setOnClickListener(new OnClickListener() {  

      public void onClick(View v) { 
       Log.i(TAG, "onStart"); 
       ll.setBackgroundResource(R.drawable.background);  
      } 
     }); 

     rButton2.setOnClickListener(new OnClickListener() {  

      public void onClick(View v) { 
       Log.i(TAG, "onStart"); 
       ll.setBackgroundResource(R.drawable.background2); 
      } 
     }); 
} 

回答

2

代碼保存您的喜好首先,你需要保存設置。爲此,請使用SharedPreferences

其次你需要從代碼設置你的bakground。將初始化代碼添加到所有活動或定義樣式。

選項1:在活動中初始化背景。在您所有活動的onCreate()中,您使用從SharedPreferences檢索的值調用setBackgroundResource方法。

選項2:創建主題。根據您選擇的Holo主題創建themes,並將其設置在您的活動的onCreate()中。你如何能做到這例如這篇文章描述:How to change current Theme at runtime in Android

這裏是主題切換一招:How do I restart an Android Activity(你應該叫recreate()

+0

感謝的答案,所以如果我創建了一個主題爲每個單選按鈕樣式我可以在那裏設置我的圖像背景嗎? –

+0

是的,但設置主題有點棘手。如果您遇到問題,那麼只需搜索一下,就可以解答很多問題。另外,請記住文檔中的註釋:http://developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme(int)Yom必須在創建任何視圖之前調用setTheme(),也就是說, setContentView()調用。此外,這可能無法用於已經創建的活動,但下次啓動該活動時,它將被激活。 – allprog

+0

非常感謝你 –