相关疑难解决方法(0)

Android - 使用Android支持库时无法在SearchWidget中找到TextView

我使用以下代码片段在SearchView小部件中查找TextView.

    int autoCompleteTextViewID = getResources().getIdentifier("android:id/search_src_text", null, null);
    mQueryTextView = (AutoCompleteTextView) searchView.findViewById(autoCompleteTextViewID);
Run Code Online (Sandbox Code Playgroud)

但是,当切换到android.support.v7.appcompat支持库时,它不再起作用.

我想这是因为支持库不使用android:"android:id/search_src_text"的前缀,但我不知道它应该是什么.我试过了

getResources().getIdentifier("android.support.v7.appcompat:id/search_src_text", null, null);
Run Code Online (Sandbox Code Playgroud)

PS更多代码片段:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
        // this xml has funshion:actionViewClass="android.support.v7.widget.SearchView"
        getMenuInflater().inflate(R.menu.search_activity_actions_v7, menu);

        android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) 
                MenuItemCompat.getActionView(menu.findItem(R.id.action_search_v7));
        if (searchView==null){
            FSLogcat.e(TAG, "searchView is null!");
        }else{
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
            searchView.setIconifiedByDefault(false);
            //searchView.requestFocus();
            searchView.setSubmitButtonEnabled(true);

            findSearchViewTextView(searchView);
            updateSearchViewText();
        }   

    return super.onCreateOptionsMenu(menu);
}

private void findSearchViewTextView(View searchView) {
    int autoCompleteTextViewID = getResources().getIdentifier("android:id/search_src_text", null, null);
    mQueryTextView = (AutoCompleteTextView) searchView.findViewById(autoCompleteTextViewID);
}

private void updateSearchViewText() …
Run Code Online (Sandbox Code Playgroud)

search android searchview android-support-library

3
推荐指数
1
解决办法
2726
查看次数