我有一项活动B
,由活动A
调用。
在活动A
中:
intent = new Intent (MainActivity.this, SelectionActivity.class);
startActivityForResult(intent, RESULT_OK);
在活动B
中(单击项目时它与ListView有关):
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
TextView tv = (TextView)arg0.getChildAt(arg2);
String key = tv.getText().toString();
Intent myIntent = new Intent();
myIntent.putExtra("genre", key);
setResult(RESULT_OK,myIntent);
finish();
}
我在onActivityResult
:
A
这样的方法
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (data != null) {
Bundle b = data.getExtras();
String str = b.getString("genre");
Log.v("nope","loaded ! " + str);
r.LoadGenre(str);
}
Log.v("nope"," not loaded ! ");
}
}
但我从未接触到任何Log.v
条消息。
LogCat很清楚,没有错误。运行A
时,它会完美地启动B
,当点击B
上的项目时,B
会完全关闭以返回A
。
答案 0 :(得分:1)
您需要将request code
传递给startActivityForResult()
方法
“请求代码”标识您的请求。当您收到结果Intent时,回调会提供相同的请求代码,以便您的应用程序可以正确识别结果并确定如何处理它。
在您的情况下,您没有使用requestcode
因此,请在requestCode
方法中检查onActivityResult
。更改
startActivityForResult(intent, RESULT_OK);
到
startActivityForResult(intent, 200);
和
if (resultCode == RESULT_OK) {
到
if (requestCode == 200 && resultCode == RESULT_OK) {