2015-02-22 5 views
4

EDIT Для кого-то интересно, моя проблема в том, что я использовал android.widget.SearchView вместо android.support.v7.widget.SearchView. Надеюсь, это поможет кому-то еще с той же проблемой!SearchView не получает фокус

Оригинал Сообщение

Я пытаюсь реализовать SearchView в Android ActionBar согласно официальному гиду: http://developer.android.com/training/search/setup.html

После неудачной попытки найти проблему, я, наконец, раздел до самого основного Hello Мировое приложение и с удивлением обнаружил, что ошибка по-прежнему сохраняется в минимальном приложении!

Вот эта ошибка: Значок поиска появляется в строке меню, без проблем. Когда я нажимаю на него, строка поиска расширяется (как и ожидалось), но курсор не отображается, и не появляется мягкая клавиатура. (Я хочу, чтобы отправить фотографию, но моя репутация слишком низкая :(

Вот соответствующий код, хотя я буквально только что создал новый Android приложения и добавил пункт в меню/menu_main.xml. MainActivity.java

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

menu_main.xml

<item android:id="@+id/action_search" 
    android:icon="@android:drawable/ic_menu_search" 
    android:title="@android:string/search_go" 
    app:showAsAction="collapseActionView|ifRoom" 
    app:actionViewClass="android.widget.SearchView" /> 
+0

Вы должны ответить и принять ответ на свой вопрос с деталями вы разместили в редактировании, как это правильное решение. – HBG

ответ

1

использовать это 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="your activity context here"><item 
    android:id="@+id/mi_search" 
    android:title="@string/search" 
    android:orderInCategory="2" 
    android:icon="@drawable/searchicon" 
    app:showAsAction="collapseActionView|ifRoom" 
    app:actionViewClass="android.support.v7.widget.SearchView" /> 

и этот код в onCreateOptionsMenu(Menu menu):

public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 

    MenuItem searchItem = menu.findItem(R.id.mi_search); 
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 

    searchView.setOnQueryTextListener(this); 

    return super.onCreateOptionsMenu(menu); 
} 

в onOptionsItemSelected():

case R.id.mi_search: 
    onSearchRequested(); 
    break; 
+1

Вау, единственный трюк был приложение: actionViewClass = «android.support.v7.widget.SearchView» вместо приложение: actionViewClass = «android.widget.SearchView» Ваш ответ дал подсказку в правильном направлении, если вы можете отредактировать его для меня Я помету ваше как правильное решение :) –

+0

код обновления с полным исходным кодом – rogerwar

Смежные вопросы