如何保存工具按钮开/关选择的状态?

Posted

技术标签:

【中文标题】如何保存工具按钮开/关选择的状态?【英文标题】:How to save the state of the toogleButton on/off selection? 【发布时间】:2011-11-15 01:45:43 【问题描述】:

您好,我已经实现了基于切换按钮选择的应用程序。但是当我关闭该应用程序然后重新打开它时,它将进入其默认选择“关闭”。 那么任何伙伴都可以告诉 mw 我应该保存什么 togleButton 选择的状态并根据该 toggleButton 选择状态执行一些操作。 . . 谢谢。

【问题讨论】:

使用 SharedPreferences 并在退出时存储切换按钮状态。阅读更多alchemiaandroid.altervista.org/sharedPreferencesTutorial.html 【参考方案1】:

使用 SharedPreferences。

tg = (ToggleButton) findViewById(R.id.toggleButton1);

tg.setOnClickListener(new OnClickListener()

    @Override
    public void onClick(View v)
    

    if((tg.isChecked()))
        
                SharedPreferences.Editor editor = preferences.edit();
                editor.putBoolean("tgpref", true); // value to store
                editor.commit();
        
        else
        
                SharedPreferences.Editor editor = preferences.edit();
                editor.putBoolean("tgpref", false); // value to store
                editor.commit();
        
    
);

这是检索值的方法:

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
boolean tgpref = preferences.getBoolean("tgpref", true);  //default is true
if (tgpref = true) //if (tgpref) may be enough, not sure

  tg.setChecked(true);

else

  tg.setChecked(false);

这段代码我没有验证,但是看看网上的一些例子,很简单!

【讨论】:

即使我关闭活动或应用程序并重新启动它也可以保存吗? 在插入首选项值时我必须添加哪种模式? @iDroid Explorer 是的,这是保存您的首选项的方法,您可以保存它们并在应用程序关闭/重新启动后阅读它们:) 我已经按照你的解释做了。但是,如果我关闭活动然后再次运行它,即使我已将其选择为“打开”,togleButton 仍保持其默认状态“关闭”。为什么会这样? 它应该打开,因为它默认设置为 true...请向我们展示您的代码【参考方案2】:

像 erdomester 建议的那样使用 SharedPreferences,但我稍微修改了他的代码。有一些不需要的条件。

tg = (ToggleButton) findViewById(R.id.toggleButton1);

tg.setOnClickListener(new OnClickListener()

    @Override
    public void onClick(View v)
    
       SharedPreferences.Editor editor = preferences.edit();
       editor.putBoolean("tgpref", tg.isChecked()); // value to store
       editor.commit();
    
);

这是检索值的方法:

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
boolean tgpref = preferences.getBoolean("tgpref", true);  //default is true

tg.setChecked(tgpref);

【讨论】:

是的,这个是一样的,只是代码更短更透明:) 为什么我必须使用默认为 true ? 你也可以把 false 放在那里。这是您选择为默认值设置的内容。【参考方案3】:

最好的办法,你可以设置tgbutton一样

主屏幕

Intent intent = new Intent(this, Something.class);
intent.putExtra(BOOLEAN_VALUE, Boolean.valueOf((tvConfigBoolean.getText().toString())));
            startActivity(intent);

筛选一些东西

Bundle bundle = getIntent().getExtras();
tbtConfigBoolean.setChecked((bundle
                    .getBoolean(MainActivity.BOOLEAN_VALUE)));

并保存状态

editor.putBoolean("BooleanKey", tbtConfigBoolean.isChecked());
        editor.commit();

祝你好运

【讨论】:

以上是关于如何保存工具按钮开/关选择的状态?的主要内容,如果未能解决你的问题,请参考以下文章

电脑休眠真是神一样

leetcode-灯泡开关 Ⅱ

使用按钮更改样式并保存此状态

手机最新qq音乐怎么设置歌手写真

如何在android中显示密码开/关模式的切换按钮

如何使单选按钮返回布尔值真/假而不是开/关