【发布时间】:2017-11-22 22:17:01
【问题描述】:
我想在我的 confiFragment 中获取我的复选框的值,并在 MainActivity 中获取该值。 configFragment 与confiActivity 相关。
我试过这个方法,但我得到一个 null ;有人能帮助我吗?
这是我的片段:
public class configFragment extends android.support.v4.app.Fragment {
CheckBox check;
configActivity cmt;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.config_layout, container, false);
check = (CheckBox) rootView.findViewById(R.id.checkbox1);
TextView text1=(TextView) rootView.findViewById(R.id.text1);
text1.setText("hello ");
cmt=(configActivity) getActivity();
check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(check.isChecked()){
Log.d("status","checked");
//check.setChecked(true);
cmt.checking=true;
}else{
Log.d("status","not checked");
//check.setChecked(false);
cmt.checking=false;
}
}
});
//cmt.checking=load();
// check();
return rootView;
}
@Override
public void onPause() {
super.onPause();
save(check.isChecked());
}
@Override
public void onResume() {
super.onResume();
check.setChecked(load());
}
private void save(final boolean isChecked) {
SharedPreferences sharedPreferences = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("check", isChecked);
editor.commit();
}
public boolean load() {
SharedPreferences sharedPreferences = getActivity().getPreferences(Context.MODE_PRIVATE);
return sharedPreferences.getBoolean("check", check.isChecked());
}
}
这是这个片段的活动:
public class configActivity extends SingleFragmentActivity {
public Boolean checking;
@Override
protected Fragment createFragment()
{
return new configFragment();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
configFragment cf=new configFragment();
SharedPreferences sharedPreferences = this.getPreferences(Context.MODE_PRIVATE);
checking=sharedPreferences.getBoolean("check", cf.check.isChecked());
}
}
这是我的主要活动:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView hello=(TextView) findViewById(R.id.hello);
Button but1=(Button) findViewById(R.id.button1);
but1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent(MainActivity.this,configActivity.class);
startActivity(i);
}
});
hello.setText("Hello world");
configActivity config=new configActivity();
Log.d("status of checking",config.checking.toString());
if(config.checking=true){
Log.d("checked","true");
}else{
Log.d("not checked","false");
}
}
【问题讨论】:
-
谁能给我解释一下,而不是对我投反对票...
-
您需要为此创建接口,或者您可以使用共享首选项,或者您可以创建一个静态对象,当您关闭或终止应用程序时,其数据将被删除。
-
你能告诉我怎么做吗?
-
最简单的方法就是在你的活动中创建一个布尔对象,比如这个 public static boolean isChecked;现在您可以通过调用 youractivityname.isChecked 轻松访问此变量。
标签: android android-fragments checkbox