gpt4 book ai didi

java - Android:从另一个 Activity 获取不正确的复选框值

转载 作者:行者123 更新时间:2023-12-02 02:49:57 25 4
gpt4 key购买 nike

在我的 mainActivity 中,我试图读取另一个 Activity 中复选框的值。然而,我似乎得到了与实际值(value)相反的结果。我怀疑问题是我试图在打开包含复选框的 Activity 之前获取该值。

在我的 mainActivity 中,我有一个

  public boolean checkValue;

我想在其他 Activity 中提供复选框的值,如下所示

 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

checkValue = SettingsActivity.getCheckValue();
}

我以后会这样使用

 public class JSONTask extends AsyncTask<String, String, String >{
...
}

@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);

checkValue = SettingsActivity.getCheckValue();

if(checkValue != true) {
TextView1.setVisibility(View.VISIBLE);
}
else{
TextView1.setVisibility(View.INVISIBLE);

}

其他 Activity 如下所示

public class SettingsActivity extends AppCompatActivity {

private static CheckBox checkBox1;

public static boolean checkStatus;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);


checkBox1 = (CheckBox) findViewById(R.id.checkBox);;




loadSavedPreferences();
savePreferences("CheckBox_Value", checkBox1.isChecked());


checkStatus = checkBox1.isChecked();


}

private void loadSavedPreferences() {

SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
boolean checkBoxValue = sharedPreferences.getBoolean("CheckBox_Value", true);

if (checkBoxValue) {
checkBox1.setChecked(true);
} else {
checkBox1.setChecked(false);
}


}

private void savePreferences(String key, boolean value) {

SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(key, value);
editor.commit();

}




@Override
public void onDestroy(){
super.onDestroy();
savePreferences("CheckBox_Value", checkBox.isChecked());


}

public static Boolean getCheckValue(){
return checkStatus;
}

我怀疑解决方案可能是在应用程序中打开设置 Activity 之前对其进行初始化,但不确定这是否可行。

最佳答案

你的假设是正确的。如果您在创建 Activity 之前调用 getCheckValue,您将仅获得静态变量 checkStatus 的默认值。通常您不想将逻辑与用户界面混合在一起。为什么不直接从您的共同偏好中获取正确的值?您已经在 loadSavedPreferences() 中执行了该操作。

而不是调用checkValue = SettingsActivity.getCheckValue();

调用:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
ceckValue = sharedPreferences.getBoolean("CheckBox_Value", true);

关于java - Android:从另一个 Activity 获取不正确的复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44009482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com