引用和更改菜单项

背景:我试图在操作栏中添加一个编辑“按钮”(即菜单项),以在TextView和EditText之间切换。我工作了。现在,我试图在单击按钮后将按钮中的文本更改为“保存”。

问题:我找不到菜单项ByById-它返回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>

这是菜单设置(即,扩展操作栏)

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

@Override
public boolean onmenuOpened(int featureId,Menu menu){
    // A global variable s.t. I could refer to it and update the text
    itEdit = findViewById(R.id.itEdit);
    return true;
}

以下是切换部分:

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;
}
cyx194502 回答:引用和更改菜单项

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

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");
  }

}
本文链接:https://www.f2er.com/3166543.html

大家都在问