Android 引用和更改菜单项
背景:我正在尝试在操作栏中设置一个编辑“按钮”(即菜单项),该按钮将在文本视图和编辑文本之间切换。我让它工作了。现在,我正试图使按钮中的文本在单击后变为“保存” 问题:我找不到菜单项-它返回null。谁能告诉我我做错了什么 这是菜单: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">
<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谢谢你,这就是我做错的地方。不知道我怎么会错过这个帖子