/ / Como recarregar fragmentos no backstack após a mudança de orientação - android, android-fragments, appcompat, android-oriented

Como recarregar fragmentos no backstack após a mudança de orientação - android, android-fragmentos, appcompat, android-orientation

Meu aplicativo Android tem uma configuração de fluxo de registro com uma Atividade e carrego as etapas como fragmentos no layout da atividade.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
tools:context="com.example.android.ui.RegisterActivity">

<LinearLayout
android:id="@+id/register_container"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"></LinearLayout>

</RelativeLayout>

Agora cada classe de fragmento implementa uma interface pública implementada no RegisterActivity para que eu saiba carregar o próximo fragmento da etapa e adiciono o novo fragmento ao backstack

mFragmentTransaction.addToBackStack(mStepOne.TAG);

agora tudo funciona bem em todas as etapas e eu posso navegar pelas etapas, mantendo os dados inseridos em cada fragmento, se permanecer na mesma orientação (portait)

MAS Depois de alterar a orientação, as vistas de fragmento desaparecem

se eu estiver na etapa 3, ainda posso pressionar o botão Voltar e ele voltará mostrando o fragmento que deveria estar lá, visualizando o ouvinte alterado no backstack

mFragmentManager.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
if(mFragmentManager.getBackStackEntryCount() > 0) {
Log.d("BACK STACK", "TAG (name): " + mFragmentManager.getBackStackEntryAt( (mFragmentManager.getBackStackEntryCount() - 1)).getName());
}
}
});

A contagem e as tags dos fragmentos são mantidasmas não os pontos de vista. O RegisterActivity onCreateView carrega o fragmento de termos na visualização, e é isso que permanece em exibição ao navegar pelas etapas.

mFragmentManager = getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mTerms = new RegisterFragmentTerms();
mFragmentTransaction.add(R.id.register_container, mTerms);
mFragmentTransaction.commit();

Parece-me que as visualizações são carregadas noRegisterActivity uns sobre os outros e limpos na mudança de orientação. É possível resolver o que estou tentando fazer? Ou eu o implementei errado? É o meu primeiro aplicativo para Android :)

Felicidades

Respostas:

6 para resposta № 1

Parece ser causado pela atividade de recreação. Você já adicionou android:configChanges="orientation|keyboardHidden|screenSize" na tua AndroidManifest.xml para a sua atividade? , se você adicionar esse sinalizador à sua atividade, ele não será destruído quando a orientação mudar e a pilha de fragmentos não desaparecer.