Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onActivityResult中的数据为空_Android_Android Intent - Fatal编程技术网

Android onActivityResult中的数据为空

Android onActivityResult中的数据为空,android,android-intent,Android,Android Intent,我正在尝试为Android做一个简单的应用程序。我有两项活动(A和B)。在B中,我只想选择一个日期 我启动A,并执行以下操作: Intent intent = new Intent(); intent.setClass(this, B.class); startActivityForResult(intent,1); 然后,在B中,我执行以下操作: Intent intent = getIntent(); setResult(RESULT_OK); intent.putExtra(

我正在尝试为Android做一个简单的应用程序。我有两项活动(
A
B
)。在
B
中,我只想选择一个
日期

我启动
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");
        .....
    }
但是
数据
捆绑
空的
。当我调试代码时,我看到在类
B
中,
intent
具有
extra
,但是当我调用
finish()
并返回到
class A
时,这个
intent
是不可到达的


如何解决此问题?

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();
试试这个:

然后,在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");
    }
}

我知道答案是肯定的,但为了进一步解释错误,您使用了
getIntent()
而不是回调中接收的
data
元素

getIntent()
返回最初用于打开活动A的意图(可能是在打开应用程序或其他活动时),而
数据
活动B作为响应参数返回的意图

另外,您在活动B中使用了
getIntent()
,而不是创建一个将返回到活动a的新意图

Intent returnIntent = new Intent();
最后,必须在
setResult

setResult(RESULT_OK,returnIntent);  

活动B中的键名与活动a中的onActivityResult()方法中的键名不同有什么原因吗?谢谢!!!我需要更改setResult(RESULT\u OK,intent)。这很简单,但我是android编程新手。@Nobelisco:没关系,欢迎朋友。如果你有任何其他问题,只需commentsetResult(RESULT_ok,intent);它帮助我做到了你的答案所说的准确,即使我得到的数据。getData()为null…仍然收到null+1@SamirMangroliya这取决于Nobelisco的答案接受与否我对此没有任何问题,但我有时接受和不接受,然后接受,然后不接受!!!哈哈……对不起。我改变了我的选择,因为我认为另一个答案更明确。的确,你的回答比较早,但我当时没有看到。我试图选择两个答案,但这是不可能的。谢谢你的帮助,如果我做得不好,我很抱歉。