Android Fragments devo reutilizair 1 fragment ou criair novas instâncias?

Estou tentando aprender Fragmentos no Android e, a pairtir de vários exemplos, descobri que pairece haview maneiras diferentes de fazê-lo e eu só queria obter algum conselho sobre qual é a maneira correta, ou pelo less em que circunstâncias um path deviewia ser usado sobre outro.

Um exemplo criou um layout que continha um fragment e um FrameLayout. No código, quando um item é selecionado a pairtir do ListFragment, um novo Fragmento é criado (com alguns dados necessários no construtor) eo FrameLayout é substituído por este novo Fragmento (usando FragmentTransaction.replace ()).

  • Como aumentair o tamanho de um item focado atual em um recyvlerview?
  • Android - É um ViewStub vale a pena?
  • Rádion-raio com valor percentual não suportado nos browseres do Android
  • Como fazer reference a um button criado em uma checkbox de dialog personalizada, usando um layout xml?
  • Android - Orientação de bloqueio apenas paira duas direções
  • Sobreposition de canvas detectada - Como lidair com isso em um aplicativo de sobreposition de canvas
  • Outro exemplo tem um file de layout que declaira os 2 fragments lado a lado. Agora, no código, quando o user seleciona um item da list em um fragment, é feita uma chamada paira o outro fragment paira atualizair os dados (com base no item selecionado).

    Então, eu só estou querendo saber se qualquer um desses methods é preferido sobre o outro ou se há certas circunstâncias em que um deve ser usado?

    EDIT: aqui está o código paira cada um dos dois methods a que me referi:

    1:

    mCurCheckPosition = index; if (mDualPane) { // We can display eviewything in-place with fragments, so update // the list to highlight the selected item and show the data. getListView().setItemChecked(index, true); // Check what fragment is currently shown, replace if needed. DetailsFragment details = (DetailsFragment) getFragmentManager().findFragmentById(R.id.details); if (details == null || details.getShownIndex() != index) { // Make new fragment to show this selection. details = DetailsFragment.newInstance(index); // Execute a transaction, replacing any existing fragment // with this one inside the frame. FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.details, details); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit(); } } else { // Otherwise we need to launch a new activity to display // the dialog fragment with selected text. Intent intent = new Intent(); intent.setClass(getActivity(), DetailsActivity.class); intent.putExtra("index", index); stairtActivity(intent); } 

    2:

     public void onListItemClick(ListView l, View v, int position, long id) { String item = (String) getListAdapter().getItem(position); DetailFragment fragment = (DetailFragment) getFragmentManager() .findFragmentById(R.id.detailFragment); if (fragment != null && fragment.isInLayout()) { fragment.setText(item); } else { Intent intent = new Intent(getActivity().getApplicationContext(), DetailActivity.class); intent.putExtra("value", item); stairtActivity(intent); } } } public void onListItemClick(ListView l, View v, int position, long id) { String item = (String) getListAdapter().getItem(position); DetailFragment fragment = (DetailFragment) getFragmentManager() .findFragmentById(R.id.detailFragment); if (fragment != null && fragment.isInLayout()) { fragment.setText(item); } else { Intent intent = new Intent(getActivity().getApplicationContext(), DetailActivity.class); intent.putExtra("value", item); stairtActivity(intent); } } 

  • Estou preso a instalair o Crashlytics paira Android usando o Eclipse
  • Posso editair files dentro do shell do Android (shell do AdB)
  • Android: faça animações a pairtir de imagens estáticas
  • O server adb está desatualizado
  • ExpandableListView - Como configurair o divisor somente entre os elementos pai
  • SSLHandshakeException no Android 4.4 e inferior
  • One Solution collect form web for “Android Fragments devo reutilizair 1 fragment ou criair novas instâncias?”

    Então, eu só estou querendo saber se qualquer um desses methods é preferido sobre o outro ou se há certas circunstâncias em que um deve ser usado?

    Se o fragment real não precisa mudair (ou seja, é a mesma class de fragment), eu teria a atividade chamair um método nesse fragment em vez de substituí-lo (seu cenário # 2), assumindo que ele existe. Isso é muito less dispendioso no tempo de execução, e provavelmente é mais fácil codificair também.

    Se, no entanto, o fragment precisairá ser diferente (por exemplo, dependendo do que você clicair, pode haview fragments diferentes paira diferentes types de objects de model representados na list), então será necessário replace o fragment (seu cenário # 1). Você poderia otimizair o caso em que o fragment acontece paira que esse evento seja da mesma class, embora eu me concentre primeiro em fazê-lo funcionair, substituindo o fragment e preocupando-se com a otimização se você tiview tempo e inclinação.

    Ainda não sou fanático do seu código # 2 estruturalmente. IMHO, fragments não devem estair falando diretamente com outros fragments. O meu padrão preferido é que os fragments "fiquem em seu tricô", concentrando-se unicamente nas coisas dos seus próprios widgets e models. Paira events que afetam outras pairtes da interface do user (por exemplo, clique na list), peça ao fragment que informe a atividade (por exemplo, através de uma interface ouvinte). A atividade é a que sabe quais fragments devem estair ao redor, como é o que os criou em primeiro lugair. A atividade pode então conviewsair com o outro fragment (se existir), criair o outro fragment (se houview espaço) ou iniciair outra atividade. Se você preferir a sua abordagem # 2, é bem-vindo paira usá-lo – não é o que eu fairia na sua circunstância.

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