Alterar a exibição no item de menu na barra de ação

Estou tentando implementar um botão de atualização no meu aplicativo para permitir que um usuário seja sincronizado manualmente novamente com um servidor da web. O código funciona, mas estou tendo problemas para descobrir as visualizações de ação (pelo menos, acho que é isso que devo usar).

Meu item de menu está aqui:

<item
    android:id="@+id/main_menu_refresh"
    android:enabled="true"
    android:icon="@drawable/refresh"
    android:orderInCategory="1"
    android:showAsAction="ifRoom"
    android:title="@string/refresh" 
    android:actionViewClass="android.widget.ProgressBar">
</item>

O problema é que sempre mostra o ProgressBar. Gostaria de saber se funcionava como o widget de pesquisa (o único exemplo que eu realmente vejo online) e adicionei ocollapseActionView para oshowAsAction e isso impediu que ele aparecesse imediatamente. No entanto, quando clico no botão Atualizar, o ícone desaparece (bom), mas o Título na barra de ação e o ProgressBar aparecem no lado esquerdo da janela onde o título costumava estar. Também não é o que eu queri

Como um último esforço, tentei adicionar isso ao meu código e remover oactionViewClass do XML:

MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
Log.w("MyApp", "Have Menu");
ProgressBar pb = new ProgressBar(ReadingList.this);
refresh.setActionView(pb);

Isso também não funcionou, resultando em um erro de ponteiro nulo emsetActionView.

Eu preciso de uma solução que eu possa chamar de qualquer função (existe um período de sincronização automática no início que eu gostaria que o ProgressBar fosse exibido também) e consegui devolvê-lo ao seu ícone estático depoi

Eu tentei leressa questã, mas estou tendo problemas para entender o que a resposta significa. Sinto que estava tentando fazer exatamente o que diz, mas acho que não. Qualquer ajuda é muito apreciada

Edit: Para sugestão do sastrax

public class IconSwitcher extends LinearLayout{



public IconSwitcher(Context context) {
    super(context);

    ProgressBar pb = new ProgressBar(context);
    ImageView iv = new ImageView(context);

    addView(iv);
    addView(pb);
}
}

Esta é a minha turma até agora. No entanto, quando tento referenciá-lo com:

MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
IconSwitcher ic = (IconSwitcher) refresh.getActionView();

Eu recebo um erro de ponteiro nulo. na criação do IconSwitcher. O botão XML é o seguinte:

<item
    android:id="@+id/main_menu_refresh"
    android:enabled="true"
    android:icon="@drawable/refresh"
    android:orderInCategory="1"
    android:showAsAction="ifRoom"
    android:title="@string/refresh" 
    android:actionViewClass="IconSwitcher">
</item>

Só estou tendo dificuldade em referenciar essa visualização do IconSwitche

Edição 2: Aparentemente, estou tendo problemas para referenciar o item de men

MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
refresh.setVisible(false);

Também me fornece um ponteiro nulo quando tento definir a visibilidade. O que há de errado com minhas referências?

questionAnswers(6)

yourAnswerToTheQuestion