She*_*lam 2 android android-intent android-searchmanager android-activity
我们假设如下:
Activity A calls Search Manager
User searches, and search results are displayed in Activity B
User clicks on a list item in Activity B
App switches back to Activity A
Run Code Online (Sandbox Code Playgroud)
我无法处理从活动B到活动A的回调,因为我没有搜索管理器意图(我认为?).
呼叫搜索管理器(在活动A中)
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.add_symbol:
onSearchRequested(); //result of search will show Activity B
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
用户选择列表项后返回活动A.
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Quote myQuote = new Quote();
myQuote.name = (companies.get(position).name);
myQuote.symbol = (companies.get(position).symbol);
//TODO: add new quote to master quote list in Main
//TODO: serialize in Main
//TODO: go back to last activity
Intent myIntent = new Intent(getApplicationContext(), Main.class);
startActivityForResult(myIntent, PICK_COMPANY_REQUEST);
}
});
Run Code Online (Sandbox Code Playgroud)
在活动A中处理回调:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PICK_COMPANY_REQUEST) {
if (resultCode == RESULT_OK) {
Toast toast = Toast.makeText(getApplicationContext(), "Stock added", Toast.LENGTH_SHORT);
toast.show();
}
}
}
Run Code Online (Sandbox Code Playgroud)
将PICK_COMPANY_REQUEST永远不会被发送到呼叫回来.为什么是这样?我假设因为搜索管理器具有意图,而不是活动B.我如何确保调用它?
永远不会调用onActivityResult().为什么?
我发布了一个答案,我认为在Android onSearchRequested()回调调用活动时遇到了同样的问题
Skythe是正确的,onActivityResult因为活动A没有为结果启动搜索活动.
为了解决这个问题,我将Activity A定义为可搜索的actvity(在清单中),以便它接收搜索意图,然后手动启动Activity B startActivityForResult,传入查询并让Activity B正常处理搜索.
您可以在上面的链接中看到我的回复,或者我在此博文中有更详细的说明.
| 归档时间: |
|
| 查看次数: |
1716 次 |
| 最近记录: |