ActionBar diferentes em cada Fragments

Gostaria de ajuda de Tabs, ActionBar e Fragments. Queria que cada Fragments tivesse uma ActionBar diferente da outra?

Exemplo:
Frag A
Uma ActionBar

Frag B
Outra ActionBar diferente da Frag A

Alguém?

Alguém poderia ajudar, com dicas e tutoriais?

Galera, se estiver errado, me corrijam, por favor.

Tenho a Classe Fragment1.java

public class Fragment1 extends Fragment {
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle SavedInstanceState) {
      View view = inflater.inflate(R.layout.fragment1, null);
      TextView text = (TextView) view.findviewbyid(R.id.text1);
      text.setText("Fragment 1, Texto 1");
      return view;
  }
}

É o seguinte. Seria adicionar uma ActionBar nesse código acima, usando o menu via programação, sem usar xml?

Ninguém???

É possível trocar a ActionBar quando mudar o Fragment? Pra cada fragment uma actionbar diferente?

Sei que tem que usar, setHasOptionsMenu, mas como? Alguém pode me dar uma luz? Por favor???

Seria usar o setHasOptionsMenu no onCreate da classe que tem o fragment que quero adicionar na ActionBar e utilizar o método onCreateOptionsMenu

@Override  
public void onCreateOptionsMenu(Menu menu) {  
     Super.onCreateOptionsMenu(menu);  
     MenuItem m1 = menu.add(0, 0, 0, "Nome do menu 1");
     m1.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);  
     MenuItem m2 = menu.add(0, 1, 1, "Nome do menu 2");
     m2.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);  
     return view;  
} 

Seria assim?

Vixe, nem tentando fazer tenho ajuda???

Nossa, já foi bom.

Você normalmente associa uma ActionBar diferente para cada Activity, talvez você esteja procurando por ActionMode.

PS: Não sei se é possivel mudar a ActionBar da Activity.

Marky, valeu, mas o problema é esse, eu não sei como faz isso. Tem como ajudar?

Esse aqui seria o código da Fragment1

public class Fragment1 extends Fragment {  
   @Override  
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle SavedInstanceState) {  
      View view = inflater.inflate(R.layout.fragment1, null);  
      TextView text = (TextView) view.findviewbyid(R.id.text1);  
      text.setText("Fragment 1, Texto 1");  
      return view;  
  }  
}

Aqui seria o código para o menu, via programação

@Override    
public void onCreateOptionsMenu(Menu menu) {    
     Super.onCreateOptionsMenu(menu);    
     MenuItem m1 = menu.add(0, 0, 0, "Nome do menu 1");  
     m1.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);    
     MenuItem m2 = menu.add(0, 1, 1, "Nome do menu 2");  
     m2.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);    
     return view;    
} 

Não teria que usar o setHasOptionsMenu(true); a Fragment1.java?

Seguindo um livro do Ricardo Lecheta, ele faz o seguinte:

public class FragmentListaCarrosTablet extend FragmentListaCarros {
      @Override
      public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             //  Informa que este Fragment deseja adicionar itens de menu na ActionBar
             setHasOptionsMenu(true);
      }

    @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
            inflater.inflate(R.menu.menu_actionbar, menu);
     }

}

Esse é um trecho do livro que fala sobre isso, seria desse jeito? A classe FragmentListaCarrosTablet extend FragmentListaCarros pode ser desse jeito:

public class <Nome da Classe> extend Fragment

E pode fazer também os itens de menu via código, sem usar xml, poderia fazer assim?

Alguém?

O que acontece que ninguém responde, sei que tem afazeres, mas olha a data que postei e nada…

Olá fbrigatt,

Não sei se você tem acompanhado o GUJ mas tem um tempo já que o forum não é mais destinado a esse tipo de pergunta.

Foi criado o GUJ Respostas, que pode ser acessado http://www.guj.com.br/

Acredito que é por isso que você não teve respostas…

Se você quer mostrar menus diferentes cada vez que um fragment é mostrado, o que você terá que fazer é esconder os menus indesejáveis a cada troca de fragmento.

Lembrando que o menu é só um pedaço da action bar, e action mode acredito ser mais indicado para quando tu seleciona por exemplo um item numa lista e então no seu action mode você pode colocar a opção de excluir aquele item, igual é feito no aplicativo do gmail…

No onCreateOptionsMenu da sua activity você deve salvar a referência do seu menu, e quando o evento de trocar de fragmento for chamado tu verifica qual fragmento está visível e seta as visibilidades.

Algo do tipo:

	@Override
	public boolean onCreateOptionsMenu(final Menu menu) {
		super.onCreateOptionsMenu(menu);
		final MenuInflater inflater = new MenuInflater(getApplicationContext());
		inflater.inflate(R.menu.menu_pedidos, menu);
		
		this.menu = menu;
		
		return true;
	}

E na chamada do seu metodo de trocar fragmento


private void trocarFragmento(Fragment fragmentVisivel){
   .....// faz o necessario para trocar as visibilidades dos fragmentos
  
       setVisibilidadeMenu();
}

private void setVisibilidadeMenu(){

      .... // faz suas validadoces e verifica qual é o estado e seta as visibilidades
       menu.findItem(R.id.seu_id_do_menu).setVisible(false);
       menu.findItem(R.id.seu_id_do_menu2).setVisible(true);
}

ByddU, obrigado pela grande explicação. Foi claro. Tenho uma outra duvida que acho que é simples. Tenho no menu na ActionBar uma opção, exemplo,:

Menu (ActionBar)
Opção 1 (Tab 1 com Fragment)
…mais opções

Como que posso habilitar ou mostrar a Tab 1 ou outra quando clicar no botão da Barra. Caso não esteja na Aba, ao clicar mostrar, entendeu?

Nem lá no Guj Respostas responderam.

Segui esse link como referência:

http://android-er.blogspot.com.br/2012/06/create-actionbar-in-tab-navigation-mode.html