Android startActivityForResult外部行为
我看不出我的代码中有什么错误: 我有一个活动(我们称之为A)以这种方式开始另一个活动(B): 以一种方式: 我还有一个回调函数,类似这样:Android startActivityForResult外部行为,android,Android,我看不出我的代码中有什么错误: 我有一个活动(我们称之为A)以这种方式开始另一个活动(B): 以一种方式: 我还有一个回调函数,类似这样: @Override protected void onActivityResult(int requestCode, int resultCode, final Intent data){ if (requestCode == B.RESULT_PATH) { if (resultCode == RESU
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data){
if (requestCode == B.RESULT_PATH) {
if (resultCode == RESULT_OK) {
... get data, do stuff....
}
}
}
所以,我的问题是它不起作用。它显示B,但当B回来时什么也不做
我已经调试了它,当我在类A中单击网格元素时,它的OnItemClickListener的onItemClick
被调用,但在此之后,A的onActivityResult
被调用,在此之后它显示为B活动。我长按B中的一项,它会执行onLongClick(int)
,但a中没有回调
我不知道发生了什么,知道吗?有线索吗
谢谢
编辑:调用OnActivityResult时,requestCode==B.RESULT_PATH在OnActivityResult中,第一个if语句中应该有requestCode而不是resultCode:
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data){
if (requestCode == FileSelector.RESULT_PATH) {
if (resultCode == RESULT_OK) {
... get data, do stuff....
}
}
}
那么,又是什么问题呢?我想启动B并在a的OnActivityResult中从B获得响应,但是在我长时间单击B中的项之前调用了a.OnActivityResult…。正确,修复了这个问题,问题是我只在B出现之前到达OnActivityResult(更具体地说,当我调试时,在它结束其onCreate之前我已经看到)。
public void onLongClick(int arg2) {
Intent returnIntent = new Intent();
returnIntent.putExtra("PATH", getItem(arg2));
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data){
if (requestCode == B.RESULT_PATH) {
if (resultCode == RESULT_OK) {
... get data, do stuff....
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data){
if (requestCode == FileSelector.RESULT_PATH) {
if (resultCode == RESULT_OK) {
... get data, do stuff....
}
}
}