在onActivityResult数据为空(data in onActivityResult is

2019-06-24 08:07发布

我试图做一个简单的应用程序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");
        .....
    }

databundle ,是null 。 当我调试的代码,我看到,在类BintentExtras ,但后来,当我调用finish()并返回到class A ,这个intent是不可达。

我怎么解决这个问题?

Answer 1:

试试这个:

然后,在B,我做的:

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

而且,在答:

@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");
}
}


Answer 2:

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


Answer 3:

我知道这是回答,但只给上的错误更多的解释,您正在使用getIntent()而不是data上的回调收到的元素。

getIntent()返回最初用来打开活动A(也许当你打开应用或从另一活性)的主旨,且data活动B返回作为响应参数的意图。

此外,您使用getIntent()活动B,而不是创建一个将返回到活动A.新意图

Intent returnIntent = new Intent();

最后,创建的目的必须添加setResult

setResult(RESULT_OK,returnIntent);  


文章来源: data in onActivityResult is null