[戻る] ボタンで以前の状態に戻せるように、通常は複数のタスクに存在させたいアクティビティがあります。ただし、新しいアクティビティをタスクスタックにプッシュせずに、既存のアクティビティでSearchViewを使用したいとも考えています (現在表示されているものを検索したいため)。これが私の問題です:
- アクティビティの起動モードを「singleTop」に設定すると、SearchView は現在のアクティビティで動作しますが、Context.startActivityは新しいアクティビティをスタックに追加しません。
- アクティビティの起動モードを「標準」に設定すると、startActivityは新しいアクティビティをスタックに追加しますが、SearchView は既存のアクティビティを検索する代わりに、新しい (空の) アクティビティも作成します。
SearchView にインテント フラグを使用させる方法が見つかりません (例: FLAG_ACTIVITY_SINGLE_TOP。逆に、起動モードを「singleTop」に設定してからFLAG_ACTIVITY_NEW_TASKをすべてのインテントに追加してみましたが、それは別のアクティビティ クラスから起動した場合にのみ機能しました。独自のクラスからアクティビティの新しいインスタンスを起動しようとすると、Android は FLAG_ACTIVITY_NEW_TASK を尊重せず、新しいタスクをスタックにプッシュしませんでした。
おそらく、Activity.onNewIntent でアクティビティを強制的に複製するためにできることがあります。
「Android 3.0 以降、SearchView ウィジェットをアクション バーのアイテムとして使用することが、アプリで検索を提供するための推奨される方法であるにもかかわらず、SearchView をあきらめて独自のカスタム ウィジェットを作成する寸前です。 」 (ソース) — これまでのところ、自明ではない場合に役立つには、あまりにも柔軟性がなく、構成もできないようです。
誰かがこの問題の解決策を見つけましたか?