我有一个操作栏,在程序启动时显示。其中一个项目(id / action_delete'的enabled属性为false。如何在应用程序运行时从其他方法控制它以使其成立。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.list_tasks, menu);
return super.onCreateOptionsMenu(menu);
}
布局菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_delete"
android:showAsAction="always"
android:enabled="false"
android:title="Delete"/>
<item
android:id="@+id/action_new"
android:showAsAction="always"
android:title="New"/>
</menu>
点击事件
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3)
{
setStatus = true;
invalidateOptionsMenu();
}
onPrepareOptionsMenu
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
MenuItem item = menu.findItem(R.id.action_delete_assignment);
if (setStatus)
{
item.setEnabled(true);
}
return super.onPrepareOptionsMenu(menu);
}
答案 0 :(得分:2)
我不确定我理解你的问题。 我想您想动态更改操作栏中的操作项。
使用onPrepareOptionsMenu()方法。
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
MenuItem item = menu.findItem(R.id.action_delete);
//show the action item
if (your condition) {
item.setEnabled(true);
item.setVisible(true);
}
super.onPrepareOptionsMenu(menu);
return true;
}
您还应该覆盖Activity class中的invalidateOptionsMenu()方法。这将声明选项菜单已更改,并将调用onPrepareOptionsMenu方法重新创建菜单。