我有一个包含三个活动的标签主持人,在每个活动中我都有按钮。
按下每个按钮,我正在更改背景可绘制资源
所以现在如何在所有三个子活动中保存每个按钮的按下状态,这样当我从一个活动移动到另一个活动时,按下按钮状态将反映在向后移动。第一项活动 - >按下所有2个按钮 - >转到第二个活动 - >回到第一个活动 - >第一个活动中的所有按钮都应处于按下状态且可绘制资源已更改
我有两张背景图片。
按钮按下 - > highlited background image - >第二次按相同按钮 - >更改为正常背景图像
我第一次运行应用程序时如果按下按钮,背景图像就会发生变化。如果我进入第二个子活动并返回,那么按钮处于按下状态,并且更改了可绘制资源。所以很好
第二次如果我按下相同的按钮并从第二次活动回到相同的活动。这里不起作用
第一个儿童活动 - >按下按钮 - >高亮的背景图像更改 - >转到第二个tabhost子活动 - >回到第一个孩子的活动 - >按下后按钮显示相同的背景图像(这很好)
问题是
现在您在第一个子活动中按相同的按钮 - >背景图像更改为正常 - >转到第二个tabhost子活动 - >回到第一个孩子的活动 - >但按钮背景资源是突出显示而不是正常
甚至如果我再次运行应用程序,按钮显示高亮度的背景图像
我在第一次儿童活动中使用的以下代码
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;
}
};
答案 0 :(得分:0)
尝试此更改:
if (isclick) {
seatdirnbtn.setBackgroundResource(R.drawable.icon4hlt);
editor.clear();
editor.putInt("sharedPreferences", 2).commit();
}
else {
seatdirnbtn.setBackgroundResource(R.drawable.icon4);
editor.clear();
editor.putInt("sharedPreferences", 1).commit();
}
答案 1 :(得分:0)
这就是我的意思:
boolean[] btnBool = new boolean[2]; // number of buttons
private View.OnClickListener listner1 = new View.OnClickListener() {
public void onClick(View v) {
toggleBtn(0); //zero refers to which index of the array for button button
setDrawables();
}
};
public void onResume() {
super.onResume();
toggleAllBtns();
setDrawables();
}
private void toggleBtn(int index) {
if(btnBool[index]) {
btnBool[index] = false;
} else {
btnBool[index] = true;
}
}
private void toggleAllBtns() {
// first switch the values of the array
for (int i = 0; i < btnBool.length; i++) {
if(btnBool[i]) {
btnBool[i] = false;
} else {
btnBool[i] = true;
}
}
}
private void setDrawables() {
// then set drawables based on values
if (btnBool[0]) {
seatdirnbtn.setBackgroundResource(R.drawable.icon4);
} else {
seatdirnbtn.setBackgroundResource(R.drawable.icon4hlt);
}
}