背景:我试图在操作栏中添加一个编辑“按钮”(即菜单项),该按钮将在TextView和EditText之间切换。我工作了。现在,我试图在单击按钮后将按钮中的文本更改为“保存”。
问题:我无法找到菜单项-它返回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;
}
您从错误的位置引用菜单项。以下解决方案应该起作用。
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");
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句