2017-08-04 66 views
2

我需要與SearchView的MainActivity,它會拋出KotlinNullPointerException:在onCreateOptionsMenu;這裏是我的代碼:KotlinNullPointerException:在onCreateOptionsMenu裏面找不到searchView; android

options_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

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

MainActivity.java

import android.text.TextUtils 
import android.view.Menu 
import android.widget.AdapterView 
import android.widget.SearchView 
import android.widget.Toast 
... 
import kotlinx.android.synthetic.main.activity_main.* 
import android.app.SearchManager 
import android.content.Context 


override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    setContentView(R.layout.activity_main) 
    logd("onCreate MainActivity") 
    setSupportActionBar(toolbar) 
    ... 
} 
... 
override fun onCreateOptionsMenu(menu: Menu): Boolean { 
    menuInflater.inflate(R.menu.options_menu, menu) 
    val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager 
    val searchView = menu.findItem(R.id.search).actionView as? SearchView 
    searchView!!.setSearchableInfo(searchManager.getSearchableInfo(componentName)) 
    return true 
} 

我使用自定義工具欄是這樣,但我認爲問題不在這裏

+0

[否過去了參數項值(https://stackoverflow.com/questions/45309872/no-value-passed-for-parameter-item) – zsmb13

+0

請的可能的複製,提供完整的堆棧跟蹤。 –

+0

您遇到與此問題相同的問題,您在XML和Kotlin文件中有不同的'SearchView'類。只要確保你使用支持庫中的任何地方。 – zsmb13

回答

3

變化android:actionViewClass="android.widget.SearchView"app:actionViewClass="android.widget.SearchView"它會正常工作。

+0

優秀工作正常 –

+0

我不明白爲什麼Android不工作,但應用工作 –

0

的問題是在應用程序:actionViewClass

<item 
    android:id="@+id/itemSearch" 
    android:icon="@drawable/ic_search" 
    android:title="Search" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    app:showAsAction="collapseActionView|ifRoom" /> 

你必須actionViewClass是活動

import android.support.v7.widget.SearchView 

在MainActivity是AppCompatActivity 延伸相同也AppCompatActivity就是這樣

進口
import android.support.v7.app.AppCompatActivity 

我希望每一個支持一個在這裏

問候