我有一個選項卡,主機帶有三個活動,每個活動我有按鈕。安卓:共享偏好不保存按鈕的狀態
在每次按下按鈕,我改變的背景繪製資源
所以現在我怎麼能保存每個按鈕的按下狀態在所有三個子活動,這樣,當我從一個活動轉移到其它的按鈕按下的狀態將在移回時反映出來。第一個活動 - >全部2個按鈕按下 - >去第二個活動 - >回到第一個活動 - >第一個活動中的所有按鈕都應該處於按下狀態,並且可繪製資源已更改
我有兩個背景圖片。
按鈕按壓 - >反白標明的背景圖像 - >第二時間按下相同的按鈕 - >變爲正常的背景圖像
第一次時我運行該應用程序和如果我按下按鈕的背景圖像得到改變。如果我去第二個孩子的活動和回來使按鍵與改變繪製資源按下狀態。所以它的精細
第二次如果我按下同一按鈕,並從第二個活動回來的同樣的活動。在這裏它不工作
第一個孩子活動 - >按按鈕 - >高亮背景圖像的變化 - >去第二tabhost子活動 - >回來的第一個孩子活動 - >按鈕顯示按下後,相同的背景圖片(這是罰款)
問題是
現在你按下第一個孩子的活動相同的按鈕 - >背景圖像更改爲正常 - >去第二tabhost子活動 - >回來的第一個孩子活動 - >但按鈕背景資源爲突出,而不是正常的
和夏娃ñ如果我再次運行應用程序的按鈕顯示highligted背景圖像
下面的代碼,我用我的第一個孩子活動
EDITED
public void onResume() {
super.onResume();
SharedPreferences sharedPreferences = this.getSharedPreferences(
"sharedPreferences", MODE_PRIVATE);
int which = sharedPreferences.getInt("sharedPreferences", 1);
switch (which)
{
case 1:
seatdirnbtn.setBackgroundResource(R.drawable.icon4); break;
case 2:
seatdirnbtn.setBackgroundResource(R.drawable.icon4hlt); break;
default:
seatdirnbtn.setBackgroundResource(R.drawable.icon4); break;
}
}
public void onPause() {
super.onPause();
boolean isclick = false;
SharedPreferences sharedPreferences = this.getSharedPreferences(
"sharedPreferences", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
if (isclick) {
seatdirnbtn.setBackgroundResource(R.drawable.icon4hlt);
editor.putInt("sharedPreferences", 2).commit();
}
}
EDIT2
public static boolean isclick = false;
private View.OnClickListener listner1 = new View.OnClickListener() {
public void onClick(View v) {
if (isclick) {
seatdirnbtn.setBackgroundResource(R.drawable.icon4hlt);
} else {
seatdirnbtn.setBackgroundResource(R.drawable.icon4);
}
isclick = !isclick;
}
};
它看起來像你的'onPause'上有把'int' 2到SharedPrefs的條件,但從來沒有把1 – mango
坦言即時不解的機會。你設置一個布爾值來總是讀取'false',這就解釋了爲什麼一部分條件沒有運行。你必須使它對應於點擊按鈕的時間。然而,你是說這是總是運行的*真實*部分?此外,我認爲這是更好的處理簡單的布爾標誌(也許是一個數組)來切換。和應用程序離開時的SharedPrefs。 – mango
謝謝,我明白了你的意思,但是因爲我是android的新手,我沒有得到任何想法如何正確地實現這一點。你可以用標誌來處理這個問題。 – Randroid