我有Activity
调用另一个Activity
,调用其他Activities
。
我发送到最后Activity
以获得结果,然后我将结果发回第Activity
页。
流程类似于
A -> B -> C -> D -> C -> B -> A
从A
到D
的流程由startActivityForResult
组成,D
到A
的流程由onActivityResult
组成。
从D
到B
,requestCode
始终相同(我决定的那个),但是从B
到A
它突然从我的activity B
变为activity A
值为随机值(在此特定情况下为196614)。
这是我用来从filterByCatalogue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), CatalogueContainerActivity.class);
startActivityForResult(intent, Defines.FILTER_BY_CATALOGUE);
}
});
调用filterByCatalogue
的代码:
FrameLayout
(将activity A
作为@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Defines.FILTER_BY_CATALOGUE) {
if (resultCode == RESULT_OK) {
Intent intent = new Intent();
intent.putExtra("article", data.getStringExtra("article"));
setResult(RESULT_OK, intent);
finish();
}
}
}
)
这是我用来回拨{{1}}:
的代码{{1}}
我搜索了很多,但我无法找到出错的地方......
答案 0 :(得分:25)
只需替换
startActivityForResult(intent, Defines.FILTER_BY_CATALOGUE);
与
getActivity().startActivityForResult(intent, Defines.FILTER_BY_CATALOGUE);
它肯定会起作用。 :)
答案 1 :(得分:10)
请求代码不是随机的。使用v4支持库片段时,片段索引编码在请求代码的前16位中,而您的请求代码位于最后16位。片段索引稍后用于查找将结果传递给的正确片段。 Reference
例如,196614实际上是3<< 16 + 6其中3是片段索引加1和6是您的请求代码。
士气:不要混合活动/片段startActivityForResult()
和onActivityResult()
。从活动启动时,处理活动中的结果。从片段开始时,处理片段中的结果。