gpt4 book ai didi

java - Java 菜单抽屉中的引用菜单项

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:32 25 4
gpt4 key购买 nike

我希望能够从抽屉中引用菜单项并更新其标题。我不知道为什么我不能这样做,但每次我尝试时,它都会说我的 menuitem 对象是空对象引用,并且它会使应用程序崩溃。

xml 文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_testItem"
android:icon="@drawable/ic_test_icon"
android:title="Test Title" />
</group>
</menu>

代码:

public class myClass {

private DrawerLayout mDrawerLayout;
private MenuItem testMenuItem;

protected void onCreate() {
mDrawerLayout = findViewById(R.id.drawer_layout);
testMenuItem = mDrawerLayout.findViewById(R.id.nav_testItem);

final NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(final MenuItem menuItem) {
menuItem.setChecked(true);
switch (menuItem.getItemId()) {
case R.id.nav_testItem:
AlertDialog.Builder builderL = new AlertDialog.Builder(myClass.this);
builderL.setTitle("Set Test Value");
builderL.setPositiveButton("Set", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
foo = inputL.getText().toString();
testMenuItem.setTitle(foo);
}
builderL.show();
break;
}

无论我尝试什么,或者尝试将 setTitle 代码移动到哪里,testMenuItem 始终为 null 并且应用程序崩溃。相比之下,我在它下面有另一个菜单项,我不需要接受用户的任何类型的输入,它只是一个开/关切换。这工作得很好:

case R.id.nav_ghost:
menuItem.setTitle("Ghost Mode Disabled");
break;

这只是因为我首先需要用户的输入,所以我根本无法引用该项目。如果我尝试非常简单的方法:

case R.id.nav_testItem:
Get String from user;
menuItem.setTitle(StringFromUser);
break;

然后,由于字符串尚未填充的愚蠢异步问题,它永远不会真正触发 setTitle 部分。

任何应用程序中最简单的部分总是让我最头疼:(

最佳答案

也许foo = builderL.getText().toString();会解决你的问题

而不是foo = inputL.getText().toString();

但是如果您是故意这样做的,我看不到您在哪里创建对象 inputL

关于java - Java 菜单抽屉中的引用菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49146652/

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