使用共享preference保存切换状态 [英] Save the toggle state using share preference

查看:137
本文介绍了使用共享preference保存切换状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试保存我的application.Here切换状态是我的code

 布尔上;
公众共享preferences US preF;
切换按钮TB;@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    // TODO自动生成方法存根
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.fb_intermidiate);
    US preF = GET preferences(MODE_PRIVATE);
    TB =(切换按钮)findViewById(R.id.toggleButton1);
    关于= S pref.getBoolean(开,真正的); //默认为true
    如果(在= TRUE)
    {
      tb.setChecked(真);
    }其他
    {
      tb.setChecked(假);
    }
    回到=(按钮)findViewById(R.id.button_back);
    //back.setText(R.string.back_button_in_settings);
    back.setOnClickListener(新View.OnClickListener(){        公共无效的onClick(视图v){
            // TODO自动生成方法存根
            完();
        }
    });
}公共无效onToggleClicked(查看视图){    关于=((切换按钮)视图).isChecked();
    如果(上){
        Toast.makeText(这一点,:通知将启用,Toast.LENGTH_SHORT).show();
        共享preferences.Editor编辑= S pref.edit();
        editor.putBoolean(开,真正的); //值存储
        editor.commit();    }其他{
    Toast.makeText(这一点,关:通知将被禁用,Toast.LENGTH_SHORT).show();
        共享preferences.Editor编辑= S pref.edit();
        editor.putBoolean(关,FALSE); //值存储
        editor.commit();
    }
}

但它越来越接近力:(

下面是我的logcat

 九月七日至25日:02:23.317:E / AndroidRuntime(640):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.ace.gugulog / com.ace。 gugulog.activities.FacebookIntermidiate}:显示java.lang.NullPointerException九月7日至25日:02:23.317:E / AndroidRuntime(640):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815)九月7日至25日:02:23.317:E / AndroidRuntime(640):在java.lang.reflect.Method.invokeNative(本机方法)九月7日至25日:02:23.317:E / AndroidRuntime(640):在java.lang.reflect.Method.invoke(Method.java:491)九月7日至25日:02:23.317:E / AndroidRuntime(640):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)九月7日至25日:02:23.317:E / AndroidRuntime(640):在dalvik.system.NativeStart.main(本机方法)
九月7日至25日:02:23.317:E / AndroidRuntime(640):致:显示java.lang.NullPointerException九月7日至25日:02:23.317:E / AndroidRuntime(640):在com.ace.gugulog.activities.FacebookIntermidiate.onCreate(FacebookIntermidiate.java:32)九月7日至25日:02:23.317:E / AndroidRuntime(640):在android.app.Activity.performCreate(Activity.java:4397)九月7日至25日:02:23.317:E / AndroidRuntime(640):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)


解决方案

我认为错误的最可能的来源是,你是不是使用共享preferencces得当,改变你的code到:你应该使用getShared preferences而不是GET preferences方法。

 布尔上;
公众共享preferences US preF;
最后弦乐preF_NAME =preferences
切换按钮TB;@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    // TODO自动生成方法存根
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.fb_intermidiate);
    US preF = getShared preferences(preF_NAME,MODE_PRIVATE);
    TB =(切换按钮)findViewById(R.id.toggleButton1);
    关于= S pref.getBoolean(开,真正的); //默认为true
    如果(在= TRUE)
    {
      tb.setChecked(真);
    }其他
    {
      tb.setChecked(假);
    }
    回到=(按钮)findViewById(R.id.button_back);
    //back.setText(R.string.back_button_in_settings);
    back.setOnClickListener(新View.OnClickListener(){        公共无效的onClick(视图v){
            // TODO自动生成方法存根
            完();
        }
    });
}公共无效onToggleClicked(查看视图){    关于=((切换按钮)视图).isChecked();
    如果(上){
        Toast.makeText(这一点,:通知将启用,Toast.LENGTH_SHORT).show();
        共享preferences.Editor编辑= S pref.edit();
        editor.putBoolean(开,真正的); //值存储
        editor.commit();    }其他{
    Toast.makeText(这一点,关:通知将被禁用,Toast.LENGTH_SHORT).show();
        共享preferences.Editor编辑= S pref.edit();
        editor.putBoolean(关,FALSE); //值存储
        editor.commit();
    }
}

I try to save the toggle state in my application.Here is my code

    boolean on;
public SharedPreferences spref;
ToggleButton tb;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fb_intermidiate);
    spref = getPreferences(MODE_PRIVATE);
    tb = (ToggleButton) findViewById(R.id.toggleButton1);
    on = spref.getBoolean("On", true);  //default is true
    if (on = true) 
    {
      tb.setChecked(true);
    }       else
    {
      tb.setChecked(false);
    }
    back = (Button)findViewById(R.id.button_back); 
    //back.setText(R.string.back_button_in_settings);
    back.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            finish();
        }
    }); 
} 

public void onToggleClicked(View view) {

    on = ((ToggleButton) view).isChecked();
    if (on) {
        Toast.makeText(this, "On : Notification will be Enabled", Toast.LENGTH_SHORT).show();
        SharedPreferences.Editor editor = spref.edit();
        editor.putBoolean("On", true); // value to store
        editor.commit();

    } else {
    Toast.makeText(this, "Off : Notification will be Disabled", Toast.LENGTH_SHORT).show();
        SharedPreferences.Editor editor =spref.edit();
        editor.putBoolean("Off", false); // value to store
        editor.commit();
    }  
}

But Its getting force close.:(

Here is my logcat

07-25 09:02:23.317: E/AndroidRuntime(640): java.lang.RuntimeException: Unable to start       activity ComponentInfo{com.ace.gugulog/com.ace.gugulog.activities.FacebookIntermidiate}: java.lang.NullPointerException

07-25 09:02:23.317: E/AndroidRuntime(640):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815)

07-25 09:02:23.317: E/AndroidRuntime(640):  at java.lang.reflect.Method.invokeNative(Native Method)

07-25 09:02:23.317: E/AndroidRuntime(640):  at java.lang.reflect.Method.invoke(Method.java:491)

07-25 09:02:23.317: E/AndroidRuntime(640):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)

07-25 09:02:23.317: E/AndroidRuntime(640):  at dalvik.system.NativeStart.main(Native Method)
07-25 09:02:23.317: E/AndroidRuntime(640): Caused by: java.lang.NullPointerException

07-25 09:02:23.317: E/AndroidRuntime(640):  at  com.ace.gugulog.activities.FacebookIntermidiate.onCreate(FacebookIntermidiate.java:32)

07-25 09:02:23.317: E/AndroidRuntime(640):  at android.app.Activity.performCreate(Activity.java:4397)

07-25 09:02:23.317: E/AndroidRuntime(640):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)

解决方案

I think most likely source of error is, you are not using shared preferencces properly, change your code to: you should use getSharedPreferences instead of getPreferences method.

  boolean on;
public SharedPreferences spref;
final String PREF_NAME="preferences";
ToggleButton tb;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fb_intermidiate);
    spref = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
    tb = (ToggleButton) findViewById(R.id.toggleButton1);
    on = spref.getBoolean("On", true);  //default is true
    if (on = true) 
    {
      tb.setChecked(true);
    }       else
    {
      tb.setChecked(false);
    }
    back = (Button)findViewById(R.id.button_back); 
    //back.setText(R.string.back_button_in_settings);
    back.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            finish();
        }
    }); 
} 

public void onToggleClicked(View view) {

    on = ((ToggleButton) view).isChecked();
    if (on) {
        Toast.makeText(this, "On : Notification will be Enabled", Toast.LENGTH_SHORT).show();
        SharedPreferences.Editor editor = spref.edit();
        editor.putBoolean("On", true); // value to store
        editor.commit();

    } else {
    Toast.makeText(this, "Off : Notification will be Disabled", Toast.LENGTH_SHORT).show();
        SharedPreferences.Editor editor =spref.edit();
        editor.putBoolean("Off", false); // value to store
        editor.commit();
    }  
}

这篇关于使用共享preference保存切换状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆