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
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