2012-01-16 54 views
0

在我的一項活動中,我有一個ImageButton,點擊後使用setBackgroundResource()更改背景資源。我在該活動中工作正常,但是當我離開該活動並返回時,該按鈕已更改回其在XML中設置的默認背景。有沒有辦法永久設置背景資源的東西,直到再次點擊按鈕?setBackgroundResource更改時

回答

3

你需要對圖像按鈕的值存儲在一個靜態變量或SharedPreferences,

例如聲明一個變量

public static int bgresource; 

現在的IMG按鈕,點擊

if(something) { 
bgresource = R.drawable.img1 
} else { 
bgresource = R.drawable.img2 
} 

mylayout.setBackgroundResource(bgresource); 

並在活動的onResume()中執行以下操作:

mylayout.setBackgroundResource(bgresource); 
+0

當我把layout.options。setBackgroundResource(bgresource);在img按鈕中點擊它會給我一個錯誤,說「不能在原始類型int上調用setBackgroundResource(int)」。任何解決方案 – 2012-01-16 16:50:59

+0

林不知道該怎麼辦 – 2012-01-16 18:45:53

+0

什麼是「layout.options」你可以在這裏粘貼一些代碼......? – 2012-01-18 12:56:19

0

保存您在SharedPreferences中用作背景的圖像的URL/ID,並確保在每次創建活動時設置它。否則,在下次創建活動時,將使用XML文件中指定的背景。

0

您應該覆蓋您的活動onResume()方法。 使您的活動或按鈕保持狀態(按下或未按下),並在onResume()方法中檢查此狀態並更改背景。

+0

我從來沒有在簡歷做了。這是否低於創建? – 2012-01-16 17:23:24

+0

@Zach:是的,它是在onCreate方法之後調用的。當你的活動暫停時(當另一個活動開始時,但不停止你當前的活動),在返回時,onCreate將不會被調用,但onResume會。查看活動的API文檔,其中描述了活動生命週期(鏈接http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle)。 – 2012-01-17 09:30:54

1

使用SharedPreferences。

當改變背景:

getSharedPreferences("background", MODE_PRIVATE).edit().putString("background","background_nr_1").commit(); 

getSharedPreferences("background", MODE_PRIVATE).edit().putString("background","background_nr_2").commit(); 

等。這將保存字符串,將您當前的背景描述爲sharedPreferences。

在OnCreate法,你需要把:

String back = getSharedPreferences("background", MODE_PRIVATE).getString("background"); 

這將讓你 「background_nr_x」 在後面。 現在你可以選擇背景:

if (back.equals("background_nr_1") { // set the Background associated with nr_1 
else if (.... "nr_2") ... 

注:這將還原當前選擇的背景下,即使應用程序被關閉。

0

您可以使用這樣的伎倆:

//outside the onCreate: 
    boolean resourceIsSet = false; 

    //inside the onCreate: 
    if(!resourceIsset) { 
     setBackgroundResource(); 
     resourceIsset= true; 
    } 

或者你可以使用一個SharedPreferences其他建議