使用intent来保存在不同活动中检查了哪些复选框

时间:2014-12-24 05:48:25

标签: android android-intent

所以在一个活动中我有一个按钮。

单击该按钮将初始化具有列表视图的其他活动,每个视图包含用户应从中选择的复选框列表

(有点像问题和多个答案......)

事情是,当回到之前的活动时,我希望保存这些复选框的值。 我认为意图是这样做的方式,但我不确定如何...

2 个答案:

答案 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
              }
        }

}