我正在尝试为Android
做一个简单的应用程序。我有两项活动(A
和B
)。在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");
.....
}
但data
和bundle
是null
。当我调试代码时,我发现在课程B
中,intent
有Extras
,但是当我调用finish()
并返回class A
时, <{1}}无法访问。
我该如何解决这个问题?
答案 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);