在我的一項活動中,我有一個ImageButton
,點擊後使用setBackgroundResource()
更改背景資源。我在該活動中工作正常,但是當我離開該活動並返回時,該按鈕已更改回其在XML中設置的默認背景。有沒有辦法永久設置背景資源的東西,直到再次點擊按鈕?setBackgroundResource更改時
回答
你需要對圖像按鈕的值存儲在一個靜態變量或SharedPreferences,
例如聲明一個變量
public static int bgresource;
現在的IMG按鈕,點擊
if(something) {
bgresource = R.drawable.img1
} else {
bgresource = R.drawable.img2
}
mylayout.setBackgroundResource(bgresource);
並在活動的onResume()中執行以下操作:
mylayout.setBackgroundResource(bgresource);
保存您在SharedPreferences中用作背景的圖像的URL/ID,並確保在每次創建活動時設置它。否則,在下次創建活動時,將使用XML文件中指定的背景。
您應該覆蓋您的活動onResume()
方法。 使您的活動或按鈕保持狀態(按下或未按下),並在onResume()
方法中檢查此狀態並更改背景。
我從來沒有在簡歷做了。這是否低於創建? – 2012-01-16 17:23:24
@Zach:是的,它是在onCreate方法之後調用的。當你的活動暫停時(當另一個活動開始時,但不停止你當前的活動),在返回時,onCreate將不會被調用,但onResume會。查看活動的API文檔,其中描述了活動生命週期(鏈接http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle)。 – 2012-01-17 09:30:54
使用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") ...
注:這將還原當前選擇的背景下,即使應用程序被關閉。
您可以使用這樣的伎倆:
//outside the onCreate:
boolean resourceIsSet = false;
//inside the onCreate:
if(!resourceIsset) {
setBackgroundResource();
resourceIsset= true;
}
或者你可以使用一個SharedPreferences其他建議
- 1. 錯誤使用setBackgroundResource()時
- 2. setBackgroundResource()iphone monotouch equivalent
- 3. Android SetColorFilter()與SetBackgroundResource()/ SetColorBackground()
- 4. setBackgroundResource of TextView in listitem
- 5. Android - 按鈕上的setBackgroundResource
- 6. ImageView上的setBackgroundResource返回null
- 7. 的Android setBackgroundResource保持圖像
- 8. 更改時區
- 9. 更改時區
- 10. TabHost setBackgroundResource產生空白標籤
- 11. setBackgroundResource()丟棄我的XML佈局屬性
- 12. 在其他方法中使用setBackgroundResource?
- 13. 方向更改時更改保證金?
- 14. 更改字符集時也更改xmlns?
- 15. 從靜態更改到實時更改
- 16. 更改方向時更改Xml佈局
- 17. 副本更改時NSDictionary更改
- 18. 設備方向更改時更改UIImage
- 19. XML更改時更新UI
- 20. 更改時間-1小時
- 21. 更改mysql時間
- 22. 更改iphone時間
- 23. 更改時區phpmyadmin?
- 24. MySQL時區更改?
- 25. simpledateformat更改時區
- 26. 更改時間戳
- 27. 更改Joda DateTime時區但不更改時間
- 28. 用vbscript更改修改時間戳
- 29. 選擇修改時更改圖片
- 30. 更改時間格式
當我把layout.options。setBackgroundResource(bgresource);在img按鈕中點擊它會給我一個錯誤,說「不能在原始類型int上調用setBackgroundResource(int)」。任何解決方案 – 2012-01-16 16:50:59
林不知道該怎麼辦 – 2012-01-16 18:45:53
什麼是「layout.options」你可以在這裏粘貼一些代碼......? – 2012-01-18 12:56:19