我在代碼中實現了多個點擊監聽器。但是,我希望每次單擊來自單獨圖像的點擊都會保存在共享偏好設置中的「股票代碼」中。因此,如果在圖像1上點擊2次,在圖像2上點擊4次,在圖像3上點擊6次,則共計首選項中共計12點「點擊」。問題是,每個onClickListener似乎都會覆蓋另一個,而不是堆疊。任何想法如何實現這一目標?使用多個onclicklistener添加到SharedPreference值
Image1.setOnClickListener(new View.OnClickListener() {
SharedPreferences pref = getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
int numClicks = pref.getInt("Total_Clicks", 0);
@Override
public void onClick (View v) {
numClicks++;
}
SharedPreferences pref =
getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
Editor ed = pref.edit();
ed.putInt("Total_Clicks", numClicks);
ed.apply();
}
});
Image2.setOnClickListener(new View.OnClickListener() {
SharedPreferences pref = getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
int numClicks = pref.getInt("Total_Clicks", 0);
@Override
public void onClick (View w) {
numClicks++;
}
SharedPreferences pref =
getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
Editor ed = pref.edit();
ed.putInt("Total_Clicks", numClicks);
ed.apply();
}
});
Image3.setOnClickListener(new View.OnClickListener() {
SharedPreferences pref = getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
int numClicks = pref.getInt("Total_Clicks", 0);
@Override
public void onClick (View x) {
numClicks++;
}
SharedPreferences pref =
getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
Editor ed = pref.edit();
ed.putInt("Total_Clicks", numClicks);
ed.apply();
}
});
你的答案解決了我的問題。但是,我還有一個問題,因爲我還在學習。爲什麼之前寫的方式不工作?是不是基本上是一樣的事情,但更長的時間,因爲sharedPreferences的每個實例都在一個單獨的操作中調用? –
爲了更加清晰,我添加了對答案的回覆。我現在要睡覺了,我意識到我不是最擅長解釋的,但如果您有更多關於此主題的問題,請隨時詢問,我會盡量在早上回復。 – Lauw
因此,如果我已經移動「int numClicks = pref.getInt(」Total_Clicks「,0);」從.setOnClickListener到OnClick(){}它會以同樣的方式工作? –