Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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
Android 引用和更改菜单项_Android_Android Actionbar - Fatal编程技术网

Android 引用和更改菜单项

Android 引用和更改菜单项,android,android-actionbar,Android,Android Actionbar,背景:我正在尝试在操作栏中设置一个编辑“按钮”(即菜单项),该按钮将在文本视图和编辑文本之间切换。我让它工作了。现在,我正试图使按钮中的文本在单击后变为“保存” 问题:我找不到菜单项-它返回null。谁能告诉我我做错了什么 这是菜单: <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">

背景:我正在尝试在操作栏中设置一个编辑“按钮”(即菜单项),该按钮将在文本视图和编辑文本之间切换。我让它工作了。现在,我正试图使按钮中的文本在单击后变为“保存”

问题:我找不到菜单项-它返回null。谁能告诉我我做错了什么

这是菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/itEdit"
        android:title="EDIT"
        app:showAsAction="always"
        />
</menu>
public void toggleEdit() {
    if(isEditing) {
        // Editing -> Viewing

        // Toggling TextView and EditText

        if(itEdit != null) { // It is always null
            itEdit.setTitle("EDIT");
        }
    } else {
        // Viewing -> Editing

        // Toggling TextView and EditText

        if(itEdit != null) { // It is always null
            itEdit.setTitle("SAVE");
        }
    }
    isEditing = !isEditing;
}
这里是切换部分:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/itEdit"
        android:title="EDIT"
        app:showAsAction="always"
        />
</menu>
public void toggleEdit() {
    if(isEditing) {
        // Editing -> Viewing

        // Toggling TextView and EditText

        if(itEdit != null) { // It is always null
            itEdit.setTitle("EDIT");
        }
    } else {
        // Viewing -> Editing

        // Toggling TextView and EditText

        if(itEdit != null) { // It is always null
            itEdit.setTitle("SAVE");
        }
    }
    isEditing = !isEditing;
}

您从错误的位置引用了菜单项。以下解决方案应该有效

public class TestActivity extends AppCompatActivity {

  private Menu menu;

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_written_note, menu);

    this.menu = menu;

    return true;
  }

  private void updateMenuTitle() {
    MenuItem item = menu.findItem(R.id.itEdit);
    item.setTitle("Test");
  }

}

您从错误的位置引用了菜单项。以下解决方案应该有效

public class TestActivity extends AppCompatActivity {

  private Menu menu;

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_written_note, menu);

    this.menu = menu;

    return true;
  }

  private void updateMenuTitle() {
    MenuItem item = menu.findItem(R.id.itEdit);
    item.setTitle("Test");
  }

}

检查答案:@AlexanderHoffmann谢谢,这就是我做错的。不知道我怎么会错过这篇文章。检查一下这个答案:@AlexanderHoffmann谢谢你,这就是我做错的地方。不知道我怎么会错过这个帖子