在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)