Android – Chamando o onActivityResult em Fragment (onActivityResult not called in fragment)

Android minimizar

Quando estamos utilizando o Fragment normalmente precisamos de uma instancia da Activity para realizar qualquer tipo de solução, com isso chamamos o getActivity().

Más não devemos chama-la para iniciar uma atividade pois o getActivity é referente ao FragmentActivity.

Forma correta (chama o onActivityResult da fragment):

this.startActivityForResult(intent,1);

Errado (chama o onActivityResult da FragmentActivity):

getActivity().startActivityForResult(intent,1);

Android – Como exibir o menu de opções no Fragment (How can use onCreateOptionsMenu in a Fragment)

options menu

O procedimento é o mesmo, sobrescrevemos o onCreateOptionMenu e inflamos nosso menu do resources, porem temos que adicionar somente uma linha de código a mais, no fragment vamos sobrescrever o método onCreate() vamos inserir:

Continue reading

Android – Empilhando Fragments para navegação.(navigate backward through the fragment transactions)

android_activity_fragment

Tenha em mente que quando você executa transações de fragments, tais como substituir ou remover um, muitas vezes é apropriado permitir que o usuário navegue para trás para “desfazer” a mudança.

Para permitir que o usuário navegue para trás através das operações de fragmentos, você deve chamar o addToBackStack()  antes de dar commit no FragmentTransaction.

getFragmentManager().beginTransaction()
	.replace(R.id.content_frame, new FragConsulta2())
	.addToBackStack(null)
	.commit();

Quando você  substitui um fragment e adiciona a transação para a pilha de volta (addToBackStack), o fragmento que é retirado é parado (não destruído). Se o usuário navega de volta o fragment anterior é reiniciado. Se você não adicionar a transação para a pilha de volta, em seguida, o fragment é destruído quando for substituído.

Caso haja a necessidade de “limpar” a pilha, ou seja estourar todos os backStack basta executar:

FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStack();