[英]Failed to query value from Android Checkbox Preference
我下面有两个活动。 看我的代码...
SettingsActivity.java
public class SettingsActivity extends AppCompatPreferenceActivity {
static CheckBoxPreference checkBoxPreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
checkBoxPreference = (CheckBoxPreference)findPreference("checkPref");
setupActionBar();
}
private void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
if (SettingsActivity.checkBoxPreference.isChecked()){
Toast.makeText(MainActivity.this, "Checked", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Not Checked", Toast.LENGTH_SHORT).show();
}
} catch (Exception e){
Toast.makeText(MainActivity.this, "Failed to query", Toast.LENGTH_SHORT).show();
}
}
});
}
}
正如我在这里使用Try-Catch一样 ,它没有崩溃。 但是,每当我单击该按钮时,它就会显示“无法查询” 。
怎么了 请帮忙!!!
您正在使用SettingsActivity.checkBoxPreference
表示checkBoxPreference
当前是一个static
字段,既不指向任何preference
也不知道其行为。 它仅使用字段声明。
我通常通过使用以下模式来做到这一点
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(this);
使用以下方法检索CheckBoxPreference
sharedPrefs.getBoolean("checkPref", false));
我建议您大致遵循此示例。
我猜是因为SettingsActivity.checkBoxPreference为null而发生异常,请尝试删除此Try-Catch,您会发现真正的异常
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.