gpt4 book ai didi

java - 在menu.xml中使用actionLayout时android中的NullPointerException

转载 作者:行者123 更新时间:2023-12-01 22:49:40 25 4
gpt4 key购买 nike

我想在我的应用程序菜单中使用自定义 SearchView,但在 android 中使用 menu.xml 中的 actionLayout 时遇到 NullPointerException我有自定义菜单布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/search_btn"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@android:drawable/ic_menu_search"/>

<EditText
android:id="@+id/search_et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/search_btn"
android:layout_toLeftOf="@+id/search_btn"
android:ems="10"
android:inputType="none" >

<requestFocus />
</EditText>

我的menu.xml是:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/search_view"
android:icon="@android:drawable/ic_menu_search"
android:actionLayout="@layout/search_menu"
android:showAsAction="collapseActionView|ifRoom"
android:title="@string/search_title"/>
</menu>

现在我想在 _search_btn_ 上添加 OnClickListener 所以我也这样做了:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);

searchButton = (Button) menu.findItem(R.id.search_btn);

searchButton.setOnClickListener(new OnClickListener() { // SEE HERE I'M GETTING NullPointerException
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, ((EditText) findViewById(R.id.search_et)).getText().toString(), Toast.LENGTH_LONG).show();

}
});
return true;
}

但是我在上面提到的行上得到了 NullPointerException 。如何将 ClickListener 添加到该按钮???

最佳答案

您使用了错误的 ID。使用菜单项的 ID。您可以在 MenuItem 上使用 getActionView 来获取布局。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);

MenuItem searchItem = menu.findItem(R.id.search_view);
Button searchButton = searchItem.getActionView().findViewById(R.id.search_btn);
searchButton.setOnClickListener(new OnClickListener() { // SEE HERE I'M GETTING NullPointerException
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, ((EditText) findViewById(R.id.search_et)).getText().toString(), Toast.LENGTH_LONG).show();

}
});
return true;
}

关于java - 在menu.xml中使用actionLayout时android中的NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24902248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com