onActivityResult中的数据为null

时间:2012-05-10 11:43:55

标签: android android-intent

我正在尝试为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。当我调试代码时,我发现在课程B中,intentExtras,但是当我调用finish()并返回class A时, <{1}}无法访问。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:45)

试试这个:

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

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

而且,在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");
}
}

答案 1 :(得分:9)

A onActivityResult方法

中的

   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();

答案 2 :(得分:2)

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

getIntent()返回最初用于打开活动A 的Intent(可能在您打开应用或其他活动时),而data是< strong>活动B 作为响应参数返回。

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

Intent returnIntent = new Intent();

最后,必须在setResult

中添加创建的意图
setResult(RESULT_OK,returnIntent);