2010-11-18 15 views
3

ユースケース: アクティビティAは主なアクティビティです。アクティビティBはSearcActivity(SearchManager)です。アクティビティBはListActivityなので、結果が何であれ、結果がリストに表示されます。ユーザーがリストをクリックすると、そのリストを選択して、ActivityAに戻すことができます。SearchManagerアクティビティの結果をアンドロイドのメインアクティビティに取得

私は何をしましたか? "onSearchRequested()"を使用してボタン上でSearchActivityを呼び出すことができました。 ActivityBでは、私は "setListAdapter(アダプタ)"を介して検索結果を表示しています。 "onListItemClick"を使用すると、ユーザーがリスト内のどのオプションを選択したかを知ることができます。

は、今私はコード

Intent intent = new Intent(); 
Bundle bundle = new Bundle(); 
bundle.putString("item", l.getItemAtPosition(position).toString()); 
intent.putExtras(bundle); 
setResult(RESULT_OK, getIntent()); 
finish(); 

そしてActivityA内に従うことにより、バックActivityAに結果を送信してみました、私は「onActivityResult」で結果を読み取るしようとしました。

Bundle bundle = data.getExtras(); 
String strItem = bundle.getString("item"); 
AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
alertDialog.setTitle("Item Selected"); 
alertDialog.setMessage("Item = " + strItem); 
alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int which) { 
    return; 
} 
}); 
alertDialog.show(); 

問題: 私はかつて活動Aが、再開されたが、 "onActivityResult" すべてで呼び出されていない、ということに気づきました。したがって、私はどんな対話も見ていない。さらに、SearchActivityが実際にActivityAに何かを送信しているかどうかは検証できません。

友人は、どのようにしてActivityBから送信されたデータをキャプチャできますか。

答えて

1

は、それはあなたがおそらく書きたかったです:

setResult(RESULT_OK, intent); 

代わりの

setResult(RESULT_OK, getIntent()); 

は、関数呼び出しを参照してください?

2

これはHow to handle callback from Search Manager?と重複していると思います。

onSearchRequested()に電話すると、あなたのアクティビティBが開始されていないことが正しく表示されます。startActivityForResultです。

my answer to that question hereを参照してください。基本的には、アクティビティAを検索可能なアクティビティにしてクエリを取得し、結果に対してアクティビティBを手動で起動することができます。

関連する問題