所以在一个活动中我有一个按钮。
单击该按钮将初始化具有列表视图的其他活动,每个视图包含用户应从中选择的复选框列表
(有点像问题和多个答案......)
事情是,当回到之前的活动时,我希望保存这些复选框的值。 我认为意图是这样做的方式,但我不确定如何...
答案 0 :(得分:0)
在按钮单击侦听器中使用startActiviyForResult()
启动活动B.
Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this);
startActivityForResult(intent, 1234); // 1234 is used in callback
}
});
在第二项活动中:
对于使用后退按钮的返回数据,请覆盖onBackPressed()
@Override
public void onBackPressed() {
Intent returnData = new Intent();
// get data from checkboxes
returnData.putExtra("key_1", data1);
returnData.putExtra("key_2", data2);
setResult(MainActivity.RESULT_OK, returnData);
super.onBackPressed();
}
对于使用普通按钮返回数据,请使用以下内容:
exitbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent returnData = new Intent();
// get data from checkboxes
returnData.putExtra("key_1", data1);
returnData.putExtra("key_2", data2);
setResult(MainActivity.RESULT_OK, returnData);
finish();
}
});
如果您想取消第二项活动setResult(RESULT_CANCELED)
,而不是RESULT_OK。
然后在MainActivity覆盖onActivityResult()
中,它是第二个活动完成时的回调。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1234) { // previous defined
// Make sure the request was successful
if (resultCode == RESULT_OK) {
int data1 = data.getIntExtra("key_1", 0);
int data2 = data.getIntExtra("key_2", 0);
}
}
}
强烈建议阅读this
答案 1 :(得分:0)
A:
使用startActivityForResult启动您的活动B:
Intent intent = new Intent(ActivityA.this,ActivityB.class);
startActivityForResult(intent, 1); // intent and requestCode of 1
您的活动中的B: 获取checkBox值:
boolean isChecked = ((CheckBox) findViewById(R.id.checkBox1)).isChecked(); // your check box value for example
然后将您的值发送回第一个活动:
public static final String FIRSTCHECKBOX = "first";
Intent returnIntent = new Intent();
returnIntent.putExtra(FIRSTCHECKBOX, isChecked); // add all your check box values like this
setResult(RESULT_OK, returnIntent);
finish();
如果你想取消它(比如用户点击取消btn):
Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);
finish();
再次参加您的活动A:
得到你的价值观:
protected void onActivityResult(int requestCode, int resultCode, Intent resultIntent) {
if (resultCode == RESULT_OK) {
if (requestCode ==1) {
Bolean check1 =resultIntent.getBooleanExtra(FIRSTCHECKBOX,0)// do it for all other check boxes - 0 is defualt value that you can choose 0 or 1
}
}
}