-1
我正在开发一个应用程序中,我不得不放弃在自定义对话框中的应用程序允许这一点,但关闭对话框后选择chkbox的选项,然后重新打开它chkbox后国家失去了所有成为取消 有人建议我使用共享的喜好,这里是我的代码: 图像允许用户打开对话框如何保存在Android的多选框状态关闭应用
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)
告诉我你的logcat的。 –
我已经编辑,以显示错误 – user2750762
@ user2750762什么是行号262在MainActivity.java – Hariharan