This question already has answers here:
How do I pass data between Activities in Android application?

(53个答案)



How to manage startActivityForResult on Android?

(11个答案)


2年前关闭。




我正在尝试在两个不同的活动之间发送和接收数据。我在该站点上还看到了其他一些问题,但是没有任何问题可以解决保持头等舱状态的问题。

例如,如果我想从A类向B类发送一个整数X,然后对整数X进行一些操作,然后再将其发送回A类,那么该怎么做呢?

它像下面的代码一样简单吗?

在A级
 Intent i = new Intent(this, ActivityB.class);
 i.putExtra("Value1", 1);
 startActivity(i);

并收到B类的回复:
Bundle extras = getIntent().getExtras();
int value1 = extras.getint("Value1",0);

在B级
Bundle extras = getIntent().getExtras();
int value1 = extras.getint("Value1",0);
//Do some operations on value1 such as maybe adding or subtracting
Intent i = new Intent(this, ActivityA.class);
i.putExtra("Value1", 1);
startActivity(i);

这似乎不正确,因为我只想切换回活动A并在操作完成后从活动B接收数据(也许活动B中的按钮开始对接收到的数据进行操作,然后将其发送回活动A?)

最佳答案

在第一个活动中:

Intent i = new Intent(this, ActivityB.class);
i.putExtra("Value1", "1");
startActivityForResult(i, 100);

接收如下数据:
Intent receivedIntent = getIntent();
if(receiveIntent!=null){
   String value1 = receiveIntent.getStringExtra("Value1");
}

之后,进行一些操作在第二个活动中:
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

处理结果FirstActivity:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 100) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
        }
    }
}

08-18 09:03
查看更多