[解決済み] フラグメントを用いたAndroid検索
質問
どなたか、標準的な実装方法のチュートリアルや例をご存じないでしょうか?
Android検索インターフェース
と
Fragment
s? 言い換えれば、標準的な検索に
SearchManager
をFragmentに含めることはできますか?
解決方法は?
要するに、無理なんです。の中に検索インターフェイスを作るのは、いくつかの理由があります。
Fragment
は不可能です。
-
検索可能なインターフェイスを作成する場合、Android マニフェストでデフォルトの "検索可能なアクティビティ" を指定する必要があります。ご存じだと思いますが
Fragment
は、親であるActivity
ということで、この分離は不可能です。 -
もし、あなたがすでに1について理解しているのであれば、この質問をしたのは、何か魔法のようなハックがあるのではないかと期待してのことでしょう。しかし、ドキュメントには次のように書かれています。
ユーザが検索ダイアログやウィジェットで検索を実行すると、その検索結果をもとに システムは、検索可能なアクティビティを開始し、そのアクティビティに検索結果を配信します。 クエリを、ACTION_SEARCH アクションを持つインテントに格納します。検索可能な アクティビティは、インテントのQUERYエクストラからクエリを取得し、次に を検索し、結果を表示します。
検索結果を提供する基礎となる内部システムでは、検索結果を表示するために
Activity
ではなくFragment
このため,検索インターフェースはActivity
を変更する必要があるため、不可能です。 基礎となるシステムそのもの . のソースコードを確認してください。SearchableInfo
クラスがあります。)
とはいえ、あなたが説明しているようなことを実現するのは、それほど難しいことではなさそうです。たとえば、searchable-Activity を実装して、その中で
android.intent.action.SEARCH
インテントを作成し、(結果を直ちに
ListView
は、検索クエリをあなたの
Fragment
s. 例えば、次のような検索可能なActivityを考えてみましょう。
public class SearchableActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Intent.ACTION_SEARCH.equals(getIntent().getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
doMySearch(query);
}
}
/**
* Performs a search and passes the results to the container
* Activity that holds your Fragments.
*/
public void doMySearch(String query) {
// TODO: implement this
}
}
検索要求があると、システムは検索可能なアクティビティを起動し、クエリを実行し、その結果をコンテナアクティビティに渡します(コンテナアクティビティには
doMySearch
). コンテナアクティビティは、これらの結果を、含まれる検索可能な
Fragment
で、その結果が表示されます。この実装は、おそらくあなたが期待していたものより少し作業が必要ですが、よりモジュール化できる方法があると思いますし、これがあなたのできる最善の方法のように思われます。
p.s. このアプローチを使用する場合、バックスタックに追加/削除されるアクティビティに特別な注意を払う必要があるかもしれません。これを見てください。 ポスト をご覧ください。
p.p.s. 標準の検索インターフェースを完全に忘れて
Fragment
で説明されているように
以下のRaghavの投稿
.
関連
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
HttpClientがGZIP形式でない場合の対処法
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] ViewPagerでFragmentが表示されるタイミングを決定する方法
-
[解決済み] なぜフラグメントなのか、そしてアクティビティの代わりにフラグメントを使用するのはどんなときか?
-
[解決済み] ViewPagerとフラグメント - フラグメントの状態を保存する正しい方法は何ですか?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ファインバグタイプ
-
jd-gui Java Exceptionが発生しました。
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
Spring Boot による HTTPS アクセスの設定
-
final, finally, finalizeの違いについて話してください。
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
javaでクラスを作成すると、enclosing classでないように見える
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
Exception: java.util.NoSuchElementException: 行が見つかりません