在android中使用SharedReferences和切换按钮强制关闭
我的切换按钮有问题,我总是用力关闭。按钮的代码:在android中使用SharedReferences和切换按钮强制关闭,android,sharedpreferences,oncreate,togglebutton,Android,Sharedpreferences,Oncreate,Togglebutton,我的切换按钮有问题,我总是用力关闭。按钮的代码: public void getToggle(View view) { boolean on = ((ToggleButton) view).isChecked(); if (on) { PackageManager pm = getPackageManager(); ComponentName compName = new ComponentName(getAppli
public void getToggle(View view) {
boolean on = ((ToggleButton) view).isChecked();
if (on) {
PackageManager pm = getPackageManager();
ComponentName compName = new ComponentName(getApplicationContext(),
LowBatteryReceiver.class);
pm.setComponentEnabledSetting(compName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
Toast.makeText(MainActivity.this, "Modalità risparmio attivata", Toast.LENGTH_LONG).show();
TextView textView = (TextView)findViewById(R.id.risparmiostate);
textView.setText("Modalità risparmio on");
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("tgpref", true); // value to store
editor.commit();
}else{
PackageManager pm = getPackageManager();
ComponentName compName = new ComponentName(getApplicationContext(),
LowBatteryReceiver.class);
pm.setComponentEnabledSetting(compName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
Toast.makeText(MainActivity.this, "Modalità risparmio disattivata", Toast.LENGTH_LONG).show();
TextView textView = (TextView)findViewById(R.id.risparmiostate);
textView.setText("Modalità risparmio off");
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("tgpref", false); // value to store
editor.commit();
}
}
在oncreate
public SharedPreferences preferences;
/** Called when the activity is first created. */
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
boolean tgpref = preferences.getBoolean("tgpref", true); //default is true
if (tgpref = true) //if (tgpref) may be enough, not sure
{
togglebutton.setChecked(true);
}
else
{
togglebutton.setChecked(false);
}
有什么想法吗?我什么都试过了。谢谢我的logcat坏了(我不知道为什么)。没有显示任何内容。更改
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
到
在活动的onCreate
中,因为您没有初始化您在getToggle
方法中使用它之前声明为类级字段的首选项实例
if (tgpref == true)
或
而不是
如果(tgpref=true)
尝试初始化TextView TextView=(TextView)findViewById(R.id.risparmiostate)
同时从SharedPreferences preferences=getPreferences(MODE_PRIVATE)中删除SharedPreferences
代码>已全局声明为u 张贴logcat错误,否则不容易找到,意味着我们在黑夜中找不到任何东西。这些解决方案都不起作用:(.问题是否可能是我设置切换的方式造成的?请使用xml保存更新的代码。如果出现logact错误,请将其发布。我已解决。问题是我在检查条件后声明了切换按钮。但现在,当我第一次启动应用程序时,切换设置为“打开”状态,而不是“关闭”。如何设置为默认状态?将布尔tgpref=preferences.getBoolean(“tgpref”,true);更改为布尔tgpref=preferences.getBoolean(“tgpref”,false);。不工作..确定我有日志猫..我有一个致命错误“无法启动活动”,然后是“由NullPointerException引起…”MainActivity onCreate(57)好了,现在它开始工作了,问题是我在检查条件之后声明了切换按钮。现在唯一的问题是切换开始时的状态是“开”而不是“关”。为什么?伙计,请帮忙!!@ρ∑ρK:hmm…你找到解决方法了吗:
if (tgpref == true)
if(tgpref)