关闭应用程序后如何在android中保存多个复选框状态

关闭应用程序后如何在android中保存多个复选框状态,android,checkbox,sharedpreferences,Android,Checkbox,Sharedpreferences,我正在开发一个应用程序,在该应用程序中,我必须提供在自定义对话框中选择chkbox的选项。该应用程序允许此选项,但在关闭对话框然后重新打开后,chkbox状态将丢失,并且所有选项都将被取消选中 有人建议我使用共享首选项,以下是我的代码: “图像允许用户打开”对话框 ImageView img1 = (ImageView)findViewById(R.id.image_menu); img1.setOnClickListener(new OnClickListener() {

我正在开发一个应用程序,在该应用程序中,我必须提供在自定义对话框中选择chkbox的选项。该应用程序允许此选项,但在关闭对话框然后重新打开后,chkbox状态将丢失,并且所有选项都将被取消选中 有人建议我使用共享首选项,以下是我的代码: “图像允许用户打开”对话框

ImageView img1 = (ImageView)findViewById(R.id.image_menu);
        img1.setOnClickListener(new OnClickListener() {

              @Override
              public void onClick(View arg0) {

                // custom dialog
                final Dialog dialog = new Dialog(MainActivity.this);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                dialog.setContentView(R.layout.menu);
                Button dialogButton = (Button) dialog.findViewById(R.id.btncross);
                // if button is clicked, close the custom dialog
                dialogButton.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });

                 dialog.show();

                 Button btnShare = (Button)dialog.findViewById(R.id.btnShare);
                 btnShare.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
                        sharingIntent.setType("text/plain");
                        String shareBody = "Dry Day App ";
                        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "DryDayApp");
                        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
                        dialog.getContext().startActivity(Intent.createChooser(sharingIntent, "Share via"));

                    }

                 });

                 cb1 = (CheckBox)dialog.findViewById(R.id.checkBoxHR);
                 cb1.setChecked(preferences.getBoolean("c1", false));
                 cb1.setOnCheckedChangeListener(listener1);

                 cb2 = (CheckBox)dialog.findViewById(R.id.checkBoxDay);
                 cb2.setChecked(preferences.getBoolean("c2", false));
                 cb2.setOnCheckedChangeListener(listener2);

                 cb3 = (CheckBox)dialog.findViewById(R.id.checkBox1);
                 cb3.setChecked(preferences.getBoolean("c3", false));
                 cb3.setOnCheckedChangeListener(listener3);


              }
            });
chkbox的侦听器

private OnCheckedChangeListener listener1 = new OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
                if(isChecked){
                 cb1.setChecked(true);
                 cb2.setChecked(false);
                 cb3.setChecked(false);

                 preferences = getPreferences(MODE_PRIVATE);
                    SharedPreferences.Editor editor = preferences.edit(); 
                    editor.putBoolean("c1", true);
                    editor.putBoolean("c2", false);
                    editor.putBoolean("c3", false);
                    editor.commit();
                }


            }
        };

        private OnCheckedChangeListener listener2 = new OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
                if(isChecked){ 
                 cb1.setChecked(false);
                 cb2.setChecked(true);
                 cb3.setChecked(false);

                 preferences = getPreferences(MODE_PRIVATE);
                    SharedPreferences.Editor editor = preferences.edit(); 
                    editor.putBoolean("c1", false);
                    editor.putBoolean("c2", true);
                    editor.putBoolean("c3", false);
                    editor.commit();
                }


            }
        };
        private OnCheckedChangeListener listener3 = new OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
                if(isChecked){
                 cb1.setChecked(false);
                 cb2.setChecked(false);
                 cb3.setChecked(true);
                 //context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit(); 

                 preferences = getPreferences(MODE_PRIVATE);
                    SharedPreferences.Editor editor = preferences.edit(); 
                    editor.putBoolean("c1", false);
                    editor.putBoolean("c2", false);
                    editor.putBoolean("c3", true);
                    editor.commit();
                }


            }
        };

now the application crashes showing null pointer exception
 how to solve this issue    
我的日志目录中出现错误

05-21 13:14:44.420: E/AndroidRuntime(12169): FATAL EXCEPTION: main
05-21 13:14:44.420: E/AndroidRuntime(12169): java.lang.NullPointerException
05-21 13:14:44.420: E/AndroidRuntime(12169):    at com.example.dd.MainActivity$7.onClick(MainActivity.java:262)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at android.view.View.performClick(View.java:4171)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at android.view.View$PerformClick.run(View.java:17195)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at android.os.Handler.handleCallback(Handler.java:643)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at android.os.Looper.loop(Looper.java:137)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at android.app.ActivityThread.main(ActivityThread.java:4803)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at java.lang.reflect.Method.invokeNative(Native Method)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at java.lang.reflect.Method.invoke(Method.java:511)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
05-21 13:14:44.420: E/AndroidRuntime(12169):    at dalvik.system.NativeStart.main(Native Method)
试试这个

prefernces = PreferenceManager.getDefaultSharedPreferences(this);

onCreate()

内部,我已编辑以显示error@user2750762MainActivity.javacb1.setChecked(preferences.getBoolean(“c1”,false))中的行号262是多少@user2750762您是否初始化了首选项?那是
menu.xml中的checkBoxHR
复选框吗?这是指我在menu.xml中使用的普通chkbox还是其他什么