如何访问SearchView孩子?

时间:2017-05-04 05:28:05

标签: android searchview

我正在尝试在我的应用程序中访问EditText (v7)SearchView字段,但我总是以空指针异常结束。 到目前为止,我已经尝试了一个解决方案并尝试使用android:id/search_plateR.id.search_plateR.id.search_src_textandroid:id/search_src_text来访问EditView,但都是徒劳的。

代码:

 @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);

    }

2 个答案:

答案 0 :(得分:3)

  

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

您可以使用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);

答案 1 :(得分:0)

试试这个

./snort -v