私は本当に奇妙な問題を抱えています。フラグメントのあるページャーがあります。フラグメントの 1 つは Messages フラグメントです。このフラグメントには、3 つのタブ フラグメントを持つ FragmentTabHost があります。アクションバーには SearchView があります。何かを検索したいときにクエリ文字列を書き始めると、検索ビューのフォーカスが削除され、TabHost の最初のタブに設定されます。そうすれば、クエリ文字列を書くことができません。これは、MessagesFragment の近くにいる場合にのみ発生します。例: 十分に離れている場合 (1 ページ)、検索は正常に機能しています。
誰かが私に何が問題なのか教えてもらえますか?
ここに写真があります:
メッセージフラグメント:
public class MessagesFragment extends Fragment {
private FragmentTabHost tabHost;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
this.tabHost = new FragmentTabHost(this.getActivity());
this.tabHost.setup(this.getActivity(), this.getChildFragmentManager(), container.getId());
TabSpec tabSpecForAllMessages = this.tabHost.newTabSpec("all").setIndicator("ALL");
this.tabHost.addTab(tabSpecForAllMessages, AllMessagesFragment.class, null);
TabSpec tabSpecForSentMessages = this.tabHost.newTabSpec("sent").setIndicator("SENT");
this.tabHost.addTab(tabSpecForSentMessages, SentMessagesFragment.class, null);
TabSpec tabSpecForReceivedMessages = this.tabHost.newTabSpec("received").setIndicator("RECEIVED");
this.tabHost.addTab(tabSpecForReceivedMessages, ReceivedMessagesFragment.class, null);
return this.tabHost;
}
@Override
public void onDestroyView() {
super.onDestroyView();
this.tabHost = null;
}
}
タブ ホスト レイアウト:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
</LinearLayout>
</TabHost>
アクションバーのメニュー項目:
<?xml version="1.0" encoding="utf-8"?>
<item
android:id="@+id/menu_item_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_action_search"
android:showAsAction="collapseActionView|ifRoom"
android:title="@string/title_search" />
<item
android:id="@+id/menu_item_home"
android:icon="@drawable/ic_action_home"
android:showAsAction="always"
android:title="@string/title_home" />
onCreateOptionsMenu イベント ハンドラ:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.menu_item_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(this
.getComponentName()));
return true;
}