Actionbarsherlock 如何使用ActionBarCompat获取菜单对象(在ActionBar中显示进度条)
我正在从Sherlock切换到AppCompat,我习惯于这样做,在加载这样的内容时,用进度条替换刷新操作项Actionbarsherlock 如何使用ActionBarCompat获取菜单对象(在ActionBar中显示进度条),actionbarsherlock,refresh,progress,android-actionbar-compat,Actionbarsherlock,Refresh,Progress,Android Actionbar Compat,我正在从Sherlock切换到AppCompat,我习惯于这样做,在加载这样的内容时,用进度条替换刷新操作项 public void setRefreshButtonState(boolean refreshing) { if (mOptionsMenu == null) { return; } final MenuItem refreshItem = mOptionsMenu.findItem(R.id.action_refresh); if
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中的常规菜单(与Sherlock不同),它显然会抛出
Call requires API level 11 (current min is 9): android.view.MenuItem#setActionView
我尝试了所有MenuItemCompat静态方法,但没有成功
谢谢 我找错东西了。您不希望复制菜单对象,而是复制菜单项,如下所示
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);
}
MenuItemCompat.setActionView(刷新项、R.layout.actionbar\u不确定\u进度)代码>谢谢。它救了我一天。我也从夏洛克过渡到了康帕特。