Android:共享首选项不保存按钮的状态

标签 android button save android-tabhost sharedpreferences

我有一个包含三个 Activity 的选项卡宿主,并且在每个 Activity 中都有按钮。

每次按下按钮我都会更改背景可绘制资源

那么现在我如何保存所有三个子 Activity 中每个按钮的按下状态,以便当我从一个 Activity 移动到另一个 Activity 时,按钮按下状态将反射(reflect)在向后移动时。第一个 Activity -> 按下所有 2 个按钮 -> 转到第二个 Activity -> 返回第一个 Activity -> 第一个 Activity 中的所有按钮应处于按下状态,并更改可绘制资源

我有两个背景图片。

按下按钮 -> 高亮背景图像 -> 第二次按下相同的按钮 -> 更改为正常背景图像

第一次运行应用程序时,如果我按下按钮,背景图像就会发生变化。如果我转到第二个子 Activity 并返回,那么按钮处于按下状态并更改了可绘制资源。所以很好

第二次如果我按下同一个按钮并从第二个 Activity 返回到同一个 Activity 。这里不工作

第一个子 Activity -> 按下按钮 -> 高亮背景图像更改 -> 转到第二个 tabhost 子 Activity -> 返回第一个子 Activity -> 按钮在按下后显示相同的背景图像(这很好)

问题是

现在您在第一个子 Activity 中按下相同的按钮 -> 背景图像变为正常 -> 转到第二个 tabhost 子 Activity -> 返回第一个子 Activity -> 但按钮背景资源突出显示而不是正常

即使我再次运行该应用程序,该按钮也会显示突出显示的背景图像

我在第一个子 Activity 中使用的以下代码

已编辑

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();
    }
}

编辑2

     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; 
    }

};

最佳答案

试试这个改变:

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();
}

关于Android:共享首选项不保存按钮的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13832888/

相关文章:

java - setDefaultZoom(WebSettings.ZoomDensity.valueOf(arg0)) 的 arg0 是什么?

安卓 : Get view only on which touch was released

ruby-on-rails - 将用户代理和 IP 添加到存储的 session -RecordNotSaved -Rails

c++ - Winapi - SetWindowLongPtr 在 ShutdownBlockReasonCreate/Destroy 实现 JNI native 代码

android - 如何将值保存在编辑文本框中

android - ViewPager 中的 RecyclerView 中的 ExpandableListView

c++ - GCC:简单继承测试失败

button - 哪里可以获得谷歌品牌断开连接按钮?

javascript - 如何一键多次更改背景颜色(请仅使用 JavaScript)?

javascript - 使用 Javascript 更改文本颜色?