でNPEを取得しました。断片化したSearchView(アクティビティのメニューが膨れている)
/res/menu/order_toolbar.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/order_menu_search"
android:icon="@drawable/ic_search"
android:title="@string/order_menu_search"
app:actionViewClass="android.support.widget.v7.SearchView"
app:showAsAction="ifRoom|withText" />
<item
android:id="@+id/order_menu_checkmark"
android:icon="@drawable/ic_checkmark"
android:title="@string/order_toolbar"
app:showAsAction="ifRoom|withText" />
ActivityOrder.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.order_toolbar, menu);
mMenuCheckmark = menu.findItem(R.id.order_menu_checkmark);
mMenuCheckmark.setVisible(false);
return super.onCreateOptionsMenu(menu);
}
FragmentOrder.java
@Override
public void onPrepareOptionsMenu(Menu menu){
MenuItem menuItem = menu.findItem(R.id.order_menu_search);
SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
Toast.makeText(getActivity(), "" +newText, Toast.LENGTH_SHORT).show();
return false;
}
});
}
私はActivity
のメニューを膨らませています(チェックマークを非表示にして、ユーザーが入力をした後、すべてのロジックがアクティビティになった後で有効にする必要があります)、フラグメント内にはRecyclerView
があります。検索(ツールバー内)。だから、基本的に、私はそれにアクセスする必要がありますSearchView
断片のみ。 私は何も見つけようとしていませんが何も助けません。をfragment
に入れて膨張させると、toolbar
のアイコンが2倍になります。
setHasOptionsMenu(true);
既にonCreate
で添加される。また、私はこれを試みた: 1. 2.私はバックアクティビティトラフインターフェースへのmenuItem(チェックマーク)を通過した(活性onCreateOptionsMenu除去)断片のメニューを膨らまチェックマークにアクセスできます 3. searchviewでリスナーを設定するとNPEが表示されます
に
implements SearchView.OnQueryTextListener
を追加しました。 onPrepareOptionsMenuではありません – amuyu私が既に言ったように、私がFragmentで膨らませると、私は二重のアイコンを得ます。フラグメントの目的は、アクティビティーからシリアライズ可能なリストを取得し、RecyclerViewのアダプターに渡すことです(Firebaseの値に基づいて異なるタイプのオーダーを表示する必要があるため) – fkvestak
フラグメントでオプションメニューを作成できます。 Fragmentで 'setHasOptionsMenu(true)'を使用します。 – amuyu