0
質問のタイトルにあるように、私はウィジェットをツールバーのDialogFragment
に実装しようとしています。メニューは、ツールバーのinflateMenu
メソッドを使用して膨張されます。Android DialogFragment - ツールバーの膨らんだメニューからSearchViewウィジェットを実装する
注:ダイアログフラグメント自体が別の断片の内側と呼ばれ、ここではない活動
は、私がdialogFragmentを呼び出す方法です。ここで
SearchFragment searchDialog = new SearchFragment();
searchDialog.setStyle(DialogFragment.STYLE_NORMAL, R.style.FullscreenDialogFragment);
searchDialog.show(getChildFragmentManager(), "search");
は私のmenu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.hubsante.Fragment.SearchFragment">
<item
android:id="@+id/action_search"
android:title="Rechercher"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom" />
</menu>
です
メニューの実装
toolbar.inflateMenu(R.menu.menu_objective_details);
toolbar.setOnMenuItemClickListener(this);
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.action_search){
SearchManager manager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
SearchView search = (SearchView) item.getActionView();
search.setSearchableInfo(manager.getSearchableInfo(getActivity().getComponentName()));
search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Toast.makeText(getContext(), query, Toast.LENGTH_SHORT).show();
return true;
}
@Override
public boolean onQueryTextChange(String query) {
return true;
}
});
}
return true;
}
クエリが送信されたときにトーストは表示されません!ダイアログフラグメント内のTextViewを更新しようとしても更新されません。
'getActivity()。getApplicationContext'が機能していません。実際には、 'onQueryTextSubmitted'メソッドは呼び出されません – Leonald
私は動作するコードに基づいて私の答えを更新しています。プロジェクトに応じて値を変更する必要があります – Cem