Я пытаюсь использовать SearchView
для моего приложения. Сначала я добавил appcompat
в свой проект:
compile "com.android.support:appcompat-v7:19.0.1+"
secound добавить этот код в свое меню:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_search"
android:title="@string/search"
android:icon="@drawable/ic_action_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
но когда я запустил activity
, я получаю следующее:
03-07 17: 25: 39.110 16861-16861/de.treevo.app W/MenuInflater: Can not экземпляр класса: android.support.v7.widget.SearchView java.lang.reflect.InvocationTargetException в java.lang.reflect.Constructor.newInstance(собственный метод) на android.view.MenuInflater $MenuState.newInstance(MenuInflater.java:471) на android.view.MenuInflater $MenuState.setItem(MenuInflater.java:430) на android.view.MenuInflater $MenuState.addItem(MenuInflater.java:451) на android.view.MenuInflater.parseMenu(MenuInflater.java:188) на android.view.MenuInflater.inflate(MenuInflater.java:110) на de.treevo.app.search.onCreateOptionsMenu(search.java:260) at android.app.Activity.onCreatePanelMenu(Activity.java:2538) на com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:489) на com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:853) at com.android.internal.policy.impl.PhoneWindow $1.run(PhoneWindow.java:273) на android.view.Choreographer $CallbackRecord.run(Хореограф.ява: 761) на android.view.Choreographer.doCallbacks(Хореограф .java:574) на android.view.Choreographer.doFrame(Хореограф .java:543) на android.view.Choreographer $FrameDisplayEventReceiver.run(Хореограф.ява: 747) на android.os.Handler.handleCallback(Handler.java:733) на android.os.Handler.dispatchMessage(Handler.java:95) на android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) в java.lang.reflect.Method.invoke(собственный метод) at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) Вызвано: android.view.InflateException: двоичная строка XML файла # 41: ошибка раздувания класса на android.view.LayoutInflater.createView(LayoutInflater.java:620) на com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) на android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) на android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) на android.view.LayoutInflater.rInflate(LayoutInflater.java:755) на android.view.LayoutInflater.inflate(LayoutInflater.java:492) на android.view.LayoutInflater.inflate(LayoutInflater.java:397) в android.support.v7.widget.SearchView. (SearchView.java:262) в android.support.v7.widget.SearchView. (SearchView.java:254) в java.lang.reflect.Constructor.newInstance(собственный метод) на android.view.MenuInflater $MenuState.newInstance(MenuInflater.java:471) на android.view.MenuInflater $MenuState.setItem(MenuInflater.java:430) на android.view.MenuInflater $MenuState.addItem(MenuInflater.java:451) на android.view.MenuInflater.parseMenu(MenuInflater.java:188) на android.view.MenuInflater.inflate(MenuInflater.java:110) на de.treevo.app.search.onCreateOptionsMenu(search.java:260) at android.app.Activity.onCreatePanelMenu(Activity.java:2538) на com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:489) на com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:853) at com.android.internal.policy.impl.PhoneWindow $1.run(PhoneWindow.java:273) на android.view.Choreographer $CallbackRecord.run(Хореограф.ява: 761) на android.view.Choreographer.doCallbacks(Хореограф .java:574) на android.view.Choreographer.doFrame(Хореограф .java:543) на android.view.Choreographer $FrameDisplayEventReceiver.run(Хореограф.ява: 747) на android.os.Handler.handleCallback(Handler.java:733) на android.os.Handler.dispatchMessage(Handler.java:95) на android.os.Looper.loop(Looper.Java: 136) at android.app.ActivityThread.main(ActivityThread.java:5017) в java.lang.reflect.Method.invoke(собственный метод) at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) Вызывается: java.lang.reflect.InvocationTargetException в java.lang.reflect.Constructor.newInstance(собственный метод) на android.view.LayoutInflater.createView(LayoutInflater.java:594) на com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) на android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) на android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) на android.view.LayoutInflater.rInflate(LayoutInflater.java:755) на android.view.LayoutInflater.inflate(LayoutInflater.java:492) на android.view.LayoutInflater.inflate(LayoutInflater.java:397) в android.support.v7.widget.SearchView. (SearchView.java:262) в android.support.v7.widget.SearchView. (SearchView.java:254) в java.lang.reflect.Constructor.newInstance(собственный метод) на android.view.MenuInflater $MenuState.newInstance(MenuInflater.java:471) на android.view.MenuInflater $MenuState.setItem(MenuInflater.java:430) на android.view.MenuInflater $MenuState.addItem(MenuInflater.java:451) на android.view.MenuInflater.parseMenu(MenuInflater.java:188) на android.view.MenuInflater.inflate(MenuInflater.java:110) на de.treevo.app.search.onCreateOptionsMenu(search.java:260) at android.app.Activity.onCreatePanelMenu(Activity.java:2538) на com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:489) на com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:853) at com.android.internal.policy.impl.PhoneWindow $1.run(PhoneWindow.java:273) на android.view.Choreographer $CallbackRecord.run(Хореограф.ява: 761) на android.view.Choreographer.doCallbacks(Хореограф .java:574) на android.view.Choreographer.doFrame(Хореограф .java:543) на android.view.Choreographer $FrameDisplayEventReceiver.run(Хореограф.ява: 747) на android.os.Handler.handleCallback(Handler.java:733) на android.os.Handler.dispatchMessage(Handler.java:95) на android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) в java.lang.reflect.Method.invoke(собственный метод) at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) Вызывается: android.content.res.Resources $NotFoundException: ресурс не является Drawable (цвет или путь): TypedValue {t = 0x2/d = 0x7f010030 a = -1} на android.content.res.Resources.loadDrawable(Resources.java:2068) at android.content.res.TypedArray.getDrawable(TypedArray.java:602) в android.widget.ImageView. (ImageView.java:129) на android.widget.ImageView. (ImageView.java:119) в java.lang.reflect.Constructor.newInstance(собственный метод) на android.view.LayoutInflater.createView(LayoutInflater.java:594) на com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) на android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) на android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) на android.view.LayoutInflater.rInflate(LayoutInflater.java:755) на android.view.LayoutInflater.inflate(LayoutInflater.Java: 492) на android.view.LayoutInflater.inflate(LayoutInflater.java:397) в android.support.v7.widget.SearchView. (SearchView.java:262) в android.support.v7.widget.SearchView. (SearchView.java:254) в java.lang.reflect.Constructor.newInstance(собственный метод) на android.view.MenuInflater $MenuState.newInstance(MenuInflater.java:471) на android.view.MenuInflater $MenuState.setItem(MenuInflater.java:430) на android.view.MenuInflater $MenuState.addItem(MenuInflater.java:451) на android.view.MenuInflater.parseMenu(MenuInflater.java:188) на android.view.MenuInflater.inflate(MenuInflater.java:110) на de.treevo.app.search.onCreateOptionsMenu(search.java:260) at android.app.Activity.onCreatePanelMenu(Activity.java:2538) на com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:489) на com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:853) at com.android.internal.policy.impl.PhoneWindow $1.run(PhoneWindow.java:273) на android.view.Choreographer $CallbackRecord.run(Хореограф.ява: 761) на android.view.Choreographer.doCallbacks(Хореограф .java:574) на android.view.Choreographer.doFrame(Хореограф .java:543) на android.view.Choreographer $FrameDisplayEventReceiver.run(Хореограф.ява: 747) на android.os.Handler.handleCallback(Handler.java:733) на android.os.Handler.dispatchMessage(Handler.java:95) на android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) в java.lang.reflect.Method.invoke(собственный метод) at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
и когда я нажимаю значок поиска, ничего не происходит: (
Edit1:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.offline, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) searchItem.getActionView();
//setupSearchView(searchItem);
// menu.findItem(R.id.action_search).getActionView();
return true;
}