我将从神探夏洛克切换到AppCompat,并且我习惯于这样做:在加载这样的东西时,我用进度条替换刷新操作项。
public void setRefreshButtonState(boolean refreshing) {
if (mOptionsMenu == null) {
return;
}
final MenuItem refreshItem = mOptionsMenu.findItem(R.id.action_refresh);
if (refreshItem != null) {
if (refreshing) {
refreshItem.setActionView(R.layout.actionbar_indeterminate_progress);
} else {
refreshItem.setActionView(null);
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
mOptionsMenu = menu;
return super.onCreateOptionsMenu(menu);
}但是由于菜单是AppCompat中的常规菜单(与神探夏洛克不同),它显然会抛出
Call requires API level 11 (current min is 9): android.view.MenuItem#setActionView我尝试了所有的MenuItemCompat静态方法,但都没有成功。
谢谢!
发布于 2013-10-16 23:23:21
我在寻找错误的东西。您不想添加菜单对象,但要添加菜单项,如下所示
MenuItemCompat.setActionView(refreshItem, R.layout.actionbar_indeterminate_progress);
发布于 2013-12-19 10:19:24
public void setActionItemInProgress(MenuItem menuItem, boolean refreshing) {
if (refreshing) {
MenuItemCompat.setActionView(menuItem, R.layout.actionbar_indeterminate_progress);
} else {
MenuItemCompat.setActionView(menuItem, null);
}
}https://stackoverflow.com/questions/19281917
复制相似问题