如何访问 SearchView 子项?

Fai*_*eer 2 android searchview

我正在尝试访问我的应用程序中EditTextSearchView (v7)字段,但我总是以空指针异常告终。到目前为止,我已经尝试了解决方案,并试图通过访问EditView中android:id/search_plateR.id.search_plateR.id.search_src_textandroid:id/search_src_text,但一切都是徒劳。

代码:

 @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.frag_menu_items, menu);

        MenuItem menuItem = menu.findItem(R.id.action_search);
        searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
        searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
        searchPlate = (EditText) searchView.findViewById(searchPlateId);
        searchPlate.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
        searchPlate.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
                if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                    ToastClass.getInstance().showCustomMsg(getActivity(),searchPlate.getText().toString());
                }
                return false;
            }
        });


        //searchView.setOnQueryTextListener(this);
        MenuItemCompat.setOnActionExpandListener(menuItem, new MenuItemCompat.OnActionExpandListener() {
            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {
                // Do something when collapsed
              //  Toast.makeText(getActivity(),"collapsed",Toast.LENGTH_LONG).show();
                searchMeta.setVisibility(View.GONE);
                return true;  // Return true to collapse action view
            }

            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                // Do something when expanded
               // Toast.makeText(getActivity(),"expanded",Toast.LENGTH_LONG).show();
                searchMeta.setVisibility(View.VISIBLE);
                return true;  // Return true to expand action view
            }
        });

        super.onCreateOptionsMenu(menu,inflater);

    }
Run Code Online (Sandbox Code Playgroud)

azi*_*ian 5

我正在尝试访问我的应用程序中EditTextSearchView(v7)字段。

您可以使用 Java 代码来实现。

对于android.support.v7.widget.SearchView


    EditText editText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);

对于android.widget.SearchView


    EditText editText = (EditText) searchView.findViewById(android.R.id.search_src_text);