Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 导航搜索栏中OnCreateOptions菜单中的错误_Xml_Android Studio_Kotlin - Fatal编程技术网

Xml 导航搜索栏中OnCreateOptions菜单中的错误

Xml 导航搜索栏中OnCreateOptions菜单中的错误,xml,android-studio,kotlin,Xml,Android Studio,Kotlin,我用Kotlin做导航搜索栏 因此,当我单击MainActivity中的一个按钮时,它会打开一个新的活动,可以找到一个简单的搜索 我真的很挣扎,因为我的代码中有很多错误(我是新手,所以请对我温柔一点!) XML: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr

我用Kotlin做导航搜索栏

因此,当我单击MainActivity中的一个按钮时,它会打开一个新的活动,可以找到一个简单的搜索

我真的很挣扎,因为我的代码中有很多错误(我是新手,所以请对我温柔一点!)

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

<ListView
    android:id="@+id/lv_listView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/tvemptyTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="No result"
    android:textSize="20sp"
    android:visibility="gone" />

</RelativeLayout>

搜索代码(我已经显示了代码中的错误:

    class SearchActivity : AppCompatActivity() {

    private lateinit var adapter: ArrayAdapter<*>

    override fun onCreate(savedInstanceState: Bundle?) {
        Log.d("TAG", "SearchActivity 1 JEZ")
        super.onCreate(savedInstanceState)
        setContentView(R.layout.search_main)

        adapter = ArrayAdapter(
            this,
            android.R.layout.simple_list_item_1,
            resources.getStringArray(R.array.vegetables)
        )

        lv_listView.adapter = adapter
        lv_listView.onItemClickListener =
            AdapterView.OnItemClickListener { parent, view, position, id ->
                Toast.makeText(
                    applicationContext,
                    parent?.getItemAtPosition(position).toString(),
                    Toast.LENGTH_SHORT
                ).show()
            }
        lv_listView.emptyView = tvemptyTextView
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.nav_menu,menu)   /* ERROR: Unresolved reference: menu */

        return super.onCreateOptionsMenu(menu)

        val search: MenuItem? = menu?.findItem(R.id.nav_search) /* Unresolved reference: nav_search */
        val searchView: SearchView = search?.actionView as SearchView
        searchView.queryHint = "search something"

        /* Plus a number of errors in this section (which I think maybe related to the earlier problem?)ln assuming : object is not abstract.../Conflicting overload.../ */
        searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
            override fun onQueryTextSubmit(query: String?): Boolean {
                return false
            }

            override fun onQueryTextSubmit(newText: String?): Boolean {
                adapter.filter.filter(newText)
                return true
            }
        })

        return super.onCreateOptionsMenu(menu)
    }
}
class SearchActivity:AppCompatActivity(){
专用lateinit变量适配器:ArrayAdapter
重写创建时的乐趣(savedInstanceState:Bundle?){
Log.d(“标签”、“搜索活动1 JEZ”)
super.onCreate(savedInstanceState)
setContentView(R.layout.search_main)
适配器=阵列适配器(
这
android.R.layout.simple\u list\u item\u 1,
resources.getStringArray(R.array.vegets)
)
lv_listView.adapter=适配器
lv_listView.com侦听器=
AdapterView.OnItemClickListener{parent,view,position,id->
Toast.makeText(
应用上下文,
父项?.getItemAtPosition(position).toString(),
吐司长度
).show()
}
lv_listView.emptyView=tvemptyTextView
}
重写创建选项菜单(菜单:菜单?):布尔值{
菜单充气器。充气(右菜单。导航菜单,菜单)/*错误:未解析参考:菜单*/
返回super.onCreateOptions菜单(菜单)
val search:MenuItem?=菜单?.findItem(R.id.nav_search)/*未解析引用:nav_search*/
val searchView:searchView=search?.actionView作为searchView
searchView.queryHint=“搜索某物”
/*加上本节中的一些错误(我认为可能与前面的问题有关?),假设:对象不是抽象的…/冲突重载…/*/
searchView.setOnQueryTextListener(对象:searchView.OnQueryTextListener{
重写onQueryTextSubmit(查询:字符串?):布尔值{
返回错误
}
重写onQueryTextSubmit(newText:String?):布尔值{
适配器.filter.filter(新文本)
返回真值
}
})
返回super.onCreateOptions菜单(菜单)
}
}
如果我漏掉了任何一点,我会加进去


由于我已经为此奋斗了几天,所以任何帮助都会很棒!干杯

只是一个快速提示-您可以将光标放在错误上,然后执行
Alt+Enter
,以获得一些建议和自动快速修复,以及有关错误的信息。有时它可以解释或修复问题

好的,那么

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.nav_menu,menu)   /* ERROR: Unresolved reference: menu */
我不得不将它粘贴到Android Studio中,以查看哪个
菜单
被突出显示为未识别的菜单-它是
R.
菜单
.nav_菜单
之一。这意味着你还没有任何
菜单
资源,也就是说,你的
菜单
文件夹中没有
菜单
XML文件ur
res
文件夹

所以我猜您实际上还没有创建
nav_menu.xml
在Android视图中,找到您的
res
文件夹,右键单击它并执行
New>Android资源文件
。在
Resource type
下,选择
menu
并调用它
nav_menu
,它应该会修复您的第一个错误,因为现在该文件已经存在并添加到您的资源中(
R
内容)

这将是同样的问题-没有
nav_search
ID,因此它无法识别
R
中ID列表中的名称。如果您没有创建菜单,那么您还没有创建具有该ID的菜单项,对吗


这里有两个问题,但都是由同一件事引起的——较长的错误消息告诉您对象不是抽象的,因此有一个抽象方法需要实现,但您尚未实现

“冲突重载”消息告诉您已经实现了相同的方法(相同的名称、相同的参数类型和顺序、相同的返回类型)

基本上,您需要实现两个方法,但是您给了它们相同的名称-一个应该是
onquerytexsubmit
,另一个是
onQueryTextChange
。它们具有正确的参数名称,因此底部的一个必须在某个时候重命名。将其更改为…
Change
,这将解决这两个问题


另外,您的
onOptionsMenuCreated
方法的整个下半部分应该以警告色突出显示,如果您将鼠标悬停在它上面,它应该显示“无法访问的代码”。这是因为在无法访问的代码块开始之前的一行是一个
return
语句,它退出了那里的方法。因此需要继续!和真正的
return
语句(最后的一个)

必须返回true才能显示菜单;如果返回false,则不会显示菜单


太棒了!非常感谢你的帮助,我已经取得了很大的进步!谢谢!
/* Unresolved reference: nav_search */
object is not abstract.../Conflicting overload...