24

我正在尝试为Android. 我有两个活动(AB)。在B我只想选择一个date.

我开始A,然后做:

 Intent intent = new Intent();
 intent.setClass(this, B.class);
 startActivityForResult(intent,1);

然后,在 中B,我这样做:

 Intent intent = getIntent();
 setResult(RESULT_OK);
 intent.putExtra("Date",dateSelected);
 finish();

而且,在 中A,我有下一个方法:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
     if(resultCode==RESULT_OK && requestCode==1){
        Bundle bundle = getIntent().getExtras();
        String aux = bundle.getString("nuevo");
        .....
    }

但是databundlenull。当我调试代码时,我看到在类BintentExtras,但是当我调用finish()并返回时class A,这intent是无法访问的。

我怎么解决这个问题?

4

3 回答 3

54

try this:

Then, in B, I do:

Intent intent = getIntent();
intent.putExtra("Date",dateSelected);
setResult(RESULT_OK, intent);
finish();

And, in A:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode == RESULT_OK && requestCode==1) {
        Bundle MBuddle = data.getExtras();
        String MMessage = MBuddle.getString("Date");
    }
}
于 2012-05-10T12:05:02.590 回答
9

AonActivityResult 方法中

   if(null!=data){

    Bundle bundle = data.getExtras();
    String mydate = bundle.getString("Date");

   }

并且在B

Intent returnIntent = new Intent();
returnIntent.putExtra("Date",dateSelected);
setResult(RESULT_OK,returnIntent);      
finish();
于 2012-05-10T11:49:18.213 回答
2

我知道这已得到解答,但只是为了对错误进行更多解释,您使用的是getIntent()而不是data回调中收到的元素。

getIntent()返回最初用于打开Activity A的 Intent (可能是当您打开应用程序或从另一个 Activity 时),并且dataActivity B作为响应参数返回的 Intent。

此外,您getIntent()Activity B中使用,而不是创建将返回给 Activity A 的新 Intent。

Intent returnIntent = new Intent();

最后,必须将创建的意图添加到setResult

setResult(RESULT_OK,returnIntent);  
于 2017-01-11T03:41:32.950 回答