Android onActivityResult中的数据为空
我正在尝试为Android做一个简单的应用程序。我有两项活动(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(
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的答案接受与否我对此没有任何问题,但我有时接受和不接受,然后接受,然后不接受!!!哈哈……对不起。我改变了我的选择,因为我认为另一个答案更明确。的确,你的回答比较早,但我当时没有看到。我试图选择两个答案,但这是不可能的。谢谢你的帮助,如果我做得不好,我很抱歉。