显然,要显示/隐藏不确定的进度,您必须使用以下方法:

itemMenu.setActionView(...);


所以:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_refresh:
            item.setActionView(R.layout.indeterminate_progress_action);
            runAsyncTask();
    ...
    }
}


我不清楚的是:如何将操作视图设置回null。我不想保留对MenuItem的引用,我认为这是不正确的,因为我不想承担与OptionsMenu生命周期有关的任何事情。

如何在onPostExecute上将操作视图设置为null?

最佳答案

我这样做是这样的:

refresh = false; // the future state of your indeterminate progress
invalidateOptionsMenu(); // trigger the recreation of the menu and call onCreateOptionsMenu(Menu)


然后在您的onCreateOptionsMenu(Menu)方法中:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
    super.onCreateOptionsMenu(menu, inflater);

    MenuItem refreshItem = menu.add(Menu.NONE, R.id.action_bar_refresh, 1, "Refresh");
    refreshItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

    if(refresh)
        refreshItem.setActionView(R.layout.indeterminate_progress_action);
    else
        refreshItem.setIcon(R.drawable.ic_menu_refresh);
}

关于android - ActionBarSherlock-不确定的进度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12305578/

10-09 13:30