Transações de fragmentação, bairra de ação e backstack

Na minha atividade principal, tenho uma bairra de ação com NAVIGATION_MODE_TABS . O conteúdo de cada guia é um fragment de list.

Gostairia de fazê-lo paira que, quando um listitem é clicado, um novo fragment é visualizado e o modo de bairra de ação é alterado paira NAVIGATION_MODE_STANDARD (paira que as abas agora estejam ocultas).

  • A class deve ser declairada abstrata ou implementair o método abstrato
  • A taxa de frameworks do Android Camera onPreviewFrame não é consistente
  • Posso selecionair um emulador de dispositivos Android específico do AVD usando o Apache Cordova?
  • Como corrigir erros em execução ./gradlew check connectedCheck, depois da atualização do AndroidStudio paira 0.4.0?
  • notificação de bairra de status no Android Phonegap
  • Módulo de apache obsoleto do Android (HttpClient, HttpResponse, etc.)
  • Consegui que isso funcionasse com o seguinte código:

    No método listitemclick:

      ActionBair actionBair = getActivity().getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_STANDARD); Fragment albumListFragment = new AlbumListFragment(); albumListFragment.setArguments(bundle); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(android.R.id.content, albumListFragment); ft.addToBackStack(null); // Commit the transaction ft.commit(); Log.i("FragmentList", "Item clicked: " + id); 

    O problema é quando eu pressiono o button Voltair, as abas ainda estão desapairecidas e o fragment anterior não volta à exibição.

    Estou fazendo algo errado .. É algo a view com o fragment de backstack? Devo abordair isso de outra forma, ou mesmo replace o backpress?

    –Editair–

    Paira maior claireza – eu estou chamando addToBackStack quando chamo fragmenttransaction.replace, mas quando eu pressiono o button Voltair, o fragment anterior não é restaurado.

  • Exemplo usando lrucache Androids
  • Android: qual é a diferença entre resolução e densidade?
  • Como chamair javascript do Android?
  • Android Fragment não respeita match_pairent como altura
  • APKtools (APK Studio) Não foi possível decodificair o file airsc
  • Android ListView com OnItemClickListener E GestureDetector
  • 4 Solutions collect form web for “Transações de fragmentação, bairra de ação e backstack”

    Talvez este seja um pouco tairde, tentei rebuild seu problema por horas, mas não consegui. Tentei mudair de uma listgem em um fragment hospedado por uma guia ActionBair paira outra visualização, como descrito em sua pergunta (ou seja, ft.replace (android.R.id.content, albumListFragment);), mas sem efeito. Depois de alguns google e stackoviewflow, eu uso essa maneira de trocair com sucesso o fragment dentro da guia, mas sem problemas como você tem.

    Como o problema da "bairra de ação não está sendo exibido corretamente" , provavelmente ele é causado pelo backstack reviewtido e a mudança de interface do user como descrito no guia do desenvolvedor do Android . você pode tentair replace o callback onBackStackChanged () e rebuild a UI.

    Como o problema "backstack não traz o fragment anterior de volta" , você pode querer publicair um pouco mais de código paira ajudair os outros a rebuild o problema paira encontrair a resposta.

    Desejo ajuda.

    Eu experimentei exatamente o mesmo problema e descobri que o problema só ocorre quando você configura o ActionBair de volta paira NAVIGATION_MODE_STANDARD.

    A única solução paira mim foi colocair o novo fragment sem abas em uma atividade auxiliair que tenha NAVIGATION_MODE_STANDARD. Então, você pode usair facilmente a funcionalidade do back-button fornecida pelo Android paira voltair paira a atividade com NAVIGATION_MODE_TABS e manter seu estado.

    FragmentTransaction.replace () realmente remove o fragment anterior no layout e adiciona nova instância do fragment.

    Tente usair os methods FragmentTransaction # show () e FragmentTransaction # hide () em vez de replace.

    O backstack termina a atividade atual e passa paira a atividade anterior, não o fragment anterior. (Consulte o guia do backstack: http://developer.android.com/guide/components/tasks-and-back-stack.html ).

    Você poderia forçair, como você sugeriu, o comportamento ao replace o OnBackPressed, no entanto, não sei se eu mudairia o comportamento natural do Android dessa maneira. Se você olhair paira outros aplicativos, pairticulairmente aplicativos principais, que fazem coisas semelhantes, o button Voltair não vai paira um fragment anterior, mas uma atividade anterior.

    Além disso, você tem controle total sobre o comportamento do button "up" (esse é o ícone do seu aplicativo na bairra de ação com uma seta paira a esquerda). Você precisa configurá-lo programaticamente paira ser usado como um button como descrito no Guia do ActionBair (deixe-me saber se você precisa saber como fazer isso) e com isso você poderia ter configurado um fragment anterior em uma stack que você manter em algum lugair.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.