如何保存切换按钮的开/关状态?

3

你好,我已经根据切换按钮的选择实现了应用程序。但是,当我关闭该应用程序然后重新打开它时,它将回到其默认选择,即“关闭”。 那么,有没有人告诉我我应该保存toogleButton选择的状态并根据该toogleButton选择状态执行一些操作呢? 谢谢。


1
使用SharedPreferences,在退出时存储切换按钮状态。了解更多请访问http://alchemiaandroid.altervista.org/sharedPreferencesTutorial.html。 - evilone
3个回答

13

使用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);
}

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


即使我关闭活动或应用程序,再次启动它时是否可以保存? - Shreyash Mahajan
在插入参数值时,我应该添加哪个模式? - Shreyash Mahajan
@iDroid Explorer 是的,这是保存您的偏好设置的方法,您可以在应用程序关闭/重新启动或其他情况下保存并读取它们 :) - evilone
1
我按照您的解释所做。但是,如果我关闭活动,然后再次运行它,即使我已将其选择为“开启”,toogleButton仍然保持在其默认状态“关闭”。为什么会发生这种情况? - Shreyash Mahajan
它应该是开启的,因为默认设置为true...请展示你的代码。 - erdomester

3
像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);

是的,这是相同的代码,只是更短、更透明 :) - erdomester
为什么我必须将默认值设置为true? - Shreyash Mahajan
你也可以把false放在那里。这是您选择设置默认值的选项。 - evilone

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

祝你好运


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接