2015-04-06 134 views
2

我想在我的android應用程序中創建一個SearchView,不幸的是幾乎所有的例子都是關於在操作欄中實現searchview的。我禁用了操作欄,我想在線性佈局內創建searchview。SearchView WITH ACTIONBAR

所以我把搜索查看的的LinearLayout裏面,只要你做的XML預覽會顯示「顯示問題」:

java.lang.NullPointerException 
at android.content.res.TypedArray.hasValueOrEmpty(TypedArray.java:845) 
at android.widget.SearchView.<init>(SearchView.java:295) 
at android.widget.SearchView.<init>(SearchView.java:258) 
at android.widget.SearchView.<init>(SearchView.java:254) 
at sun.reflect.GeneratedConstructorAccessor499.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
at android.view.BridgeInflater.onCreateView(BridgeInflater.java:82) 
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:128) 
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:806) 
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:782) 
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:809) 
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:782) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:410) 
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:321) 
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350) 
at com.android.tools.idea.rendering.RenderService$5.compute(RenderService.java:708) 
at com.android.tools.idea.rendering.RenderService$5.compute(RenderService.java:697) 
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932) 
at com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:697) 
at com.android.tools.idea.rendering.RenderService.render(RenderService.java:816) 
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:646) 
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1700(AndroidLayoutPreviewToolWindowManager.java:82) 
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.java:589) 
at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178) 
at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209) 
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212) 
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171) 
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7.run(AndroidLayoutPreviewToolWindowManager.java:584) 
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320) 
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310) 
at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254) 
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269) 
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227) 
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217) 
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) 
at com.intellij.util.Alarm$Request$1.run(Alarm.java:327) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 

但是當我運行的應用程序,它工作得很好,任何想法,爲什麼這個nullpointerexception是否被拋出?

這是我的XML代碼:

<SearchView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/searchView" 
android:iconifiedByDefault="false" 
android:queryHint="Search" 
android:searchIcon="@drawable/search_icon" 
> 
</SearchView> 

,你可以請提供我如何從實例化Java文件這個搜索查看,所以我可以用它一些示例代碼?

+0

[This](http://stackoverflow.com/questions/13733460/android-providing-recent-search-suggestions-without-searchable-activity)肯定會回答你的問題,但不同的問題 – Geros 2015-04-06 08:07:32

+0

添加你的代碼片段 – Manikandan 2015-04-06 08:28:35

+0

什麼是YS說實際上是正確的,沒有任何代碼的鏈接,因爲我什麼也沒做。問題是,當我添加提到的片段(SearchView)這個異常apears,但應用程序完美工作,所以我想這個問題只是在IDE中,也許你沒有使用android studio,這就是爲什麼你沒有看到這個問題。 – 2015-04-06 16:35:27

回答

1

NullPointerException在嘗試渲染SearchView時由IDE(而不是應用程序)拋出。本身似乎沒有問題。如果你的應用程序工作正常,那麼就忽略它。

+0

NullPointerException不能被忽略!只是因爲作品這並不意味着該應用程序是無缺陷的:S 有一天可以產生更糟糕的事情與打樁erros ... – 2015-12-03 11:38:30

+1

明白了,明白了......感謝downvoting沒有正確閱讀答案。 ** IntelliJ Idea引發異常,而不是由應用**引發。你有能力理解差異嗎? IntelliJ Idea本身就是一個JAVA應用程序,就像任何其他Java程序一樣,它不時拋出異常...... :) – 2015-12-03 12:03:14

相關問題