繁体   English   中英

在Android中保存按钮的状态

[英]save the state of button in android

在此处输入图片说明

我正在相机应用程序上工作,我有两个imageview,一个是自动,第二个是pro。我想要当我单击auto auto并更改图像图标,并且当我单击pro时自动取消选择auto view并选择pro view

autobtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            autobtn.setImageResource(R.drawable.autoactive);
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ModeActivity.this);
            SharedPreferences.Editor edit = sharedPreferences.edit();
            edit.putString("focus_value", "focus_mode_auto");
            Intent it = new Intent(ModeActivity.this, MainActivity.class);
            startActivity(it);
            edit.commit();
            //MainActivity.grid.setVisibility(View.VISIBLE);
        }
    });

在此处输入图片说明

在第二张图片中选择了专业

您的自动按钮

autobtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        autobtn.setBackgroundResource(R.drawable.autoactive);     //Change the AUTO image to selected
        proButton.setBackgroundResource(R.drawable.proinactive);  //Change image PRO to deselected
        SaveButtonState("focus_mode_auto");                       //Save the button state

        Intent it = new Intent(ModeActivity.this, MainActivity.class);
        startActivity(it);
    }
});

您的PRO按钮

proButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        autoButton.setBackgroundResource(R.drawable.autoinactive);   //Change the AUTO image to deselected
        proButton.setBackgroundResource(R.drawable.proactive);       //Change PRO image to selected
        SaveButtonState("focus_mode_pro");                           //Save the button state

        Intent it = new Intent(ModeActivity.this, MainActivity.class);
        startActivity(it);
    }
});

保存方式

public void SaveButtonState(String bState){
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ModeActivity.this);
    SharedPreferences.Editor edit = sharedPreferences.edit();
    edit.putString("focus_value", bState);
    edit.commit();
}

加载方式

public String LoadButtonState(){  
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);   
    String buttonState = preferences.getString("focus_value", "DEFAULT");
    return buttonState;
}

使用LoadButtonState()在你onCreate()当你的应用程序启动,喜欢的东西来检索按钮的最后状态:

在您的onCreate()方法中

String buttonState = LoadButtonState();

if(buttonState.equals("focus_mode_auto"){
    aautobtn.setBackgroundResource(R.drawable.autoactive);      //Change the AUTO image to selected
    proButton.setBackgroundResource(R.drawable.proinactive);    //Change image PRO to deselected
}
else if(buttonState.equals("focus_mode_pro"){
    autoButton.setBackgroundResource(R.drawable.autoinactive);  //Change the AUTO image to deselected
    proButton.setBackgroundResource(R.drawable.proactive);      //Change PRO image to selected
}

这样的事情。

是的,您可以在已经使用的状态下将按钮的状态保存在Prefresences中,并在两个按钮的单击侦听器处理程序上更改按钮的状态

您正在启动活动,然后才实际将值保存在SharedPreference ,这就是为什么您无法在MainActivity获取保存的值的原因(可能是因为您试图在MainActivity onCreate中获取值)。

随便走

edit.commit();

之前

Intent it = new Intent(ModeActivity.this, MainActivity.class);

更新onResume执行此操作

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ModeActivity.this);
String selectedBtn = SharedPreferences.getString("focus_value", "nothing_selected");
if(selectedBtn.equlas("focus_mode_auto"))
    // Select the auto button
else 
    // select the pro button

您可以像这样使用SharedPreferences。

SharedPreferences sharedPreferences; 

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ModeActivity.this);
        SharedPreferences.Editor edit = sharedPreferences.edit();
        edit.putBoolean("focus_value", false);
        edit.putBoolean("auto_value", false); 
        edit.commit();

在您的按钮事件中

autobtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        boolean auto = edit.getBoolean("auto_value", false);
        boolean pro = edit.getBoolean("pro_value", false);

        if(!auto){
            edit.putBoolean("auto_value", true);
            autobtn.setImageResource(R.drawable.autoactive);
            edit.putBoolean("pro_value",false);
            probtn.setImageResource(R.drawable.xxxxx);
        }

        Intent it = new Intent(ModeActivity.this, MainActivity.class);
        startActivity(it);

    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM