引用和更改菜单项
Referencing and changing a menu item
背景: 我正在尝试在操作栏中进行编辑 "button"(即菜单项),这将在 TextView 和编辑文本。我得到了工作。现在,我试图在单击按钮后将按钮中的文本更改为 "save"。
问题: 我找不到菜单项的 ById - 它 returns 为空。谁能告诉我我做错了什么?
这是菜单:
<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;
}
您从错误的地方引用了菜单项。以下解决方案应该有效。
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");
}
}
背景: 我正在尝试在操作栏中进行编辑 "button"(即菜单项),这将在 TextView 和编辑文本。我得到了工作。现在,我试图在单击按钮后将按钮中的文本更改为 "save"。
问题: 我找不到菜单项的 ById - 它 returns 为空。谁能告诉我我做错了什么?
这是菜单:
<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;
}
您从错误的地方引用了菜单项。以下解决方案应该有效。
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");
}
}