假設如下:如何處理來自搜索管理器的回調?
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
我無法處理來自活動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);
}
}
回到活動的用戶已經選擇了一個列表項
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);
}
});
後,在活動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();
}
}
}
PICK_COMPANY_REQUEST
從不發送回電話。爲什麼是這樣?我假設,因爲搜索管理器有意圖,而不是活動B.我怎樣才能確保這被調用?
onActivityResult()永遠不會被調用。爲什麼?
問題是,onActivityResult()永遠不會被調用。即使我嘗試你的setResult()代碼。 – 2010-08-30 17:34:42
此問題是否已解決,或者您是否仍然有問題。在使用setResult之後,您是否還完成了()當前的Activity而不調用Activity A的意圖? – DeRagan 2010-08-31 04:50:56