tutorial studio navegar fragments example entre dinamicos diferencia desde activity abrir android

navegar - fragments dinamicos android studio



Finalizando la actividad actual de un fragmento (7)

Al trabajar con fragmentos, en lugar de usar this o referirse al contexto, siempre use getActivity() . Deberías llamar

getActivity().finish();

para terminar tu actividad de fragmento

Tengo un fragmento en una actividad que estoy usando como un cajón de navegación. Contiene botones que cuando se hace clic inician nuevas actividades (startActivity de un fragmento simplemente llama a startActivity en la actividad actual).

Por mi vida, parece que no puedo imaginar cómo terminaría la actividad actual después de comenzar una nueva.

Estoy buscando lograr algo como esto en el fragmento:

@Override public void onClick(View view) { // TODO Auto-generated method stub if (view == mButtonShows) { Intent intent = new Intent(view.getContext(), MyNewActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); finish(); } }

Pero parece que Fragment.class no implementa finish () (como implementa startActivity (...)).

Me gustaría borrar la actividad backstack cuando inicien la segunda actividad. (por lo que volver atrás de la nueva actividad los devolvería técnicamente al lanzador)


Bueno en realidad...

No quisiera que el Fragmento intente terminar la Actividad. Eso pone demasiada autoridad en el Fragmento en mi opinión. En cambio, usaría la guía aquí: http://developer.android.com/training/basics/fragments/communicating.html

Haga que el Fragmento defina una interfaz que la Actividad debe implementar. Realice una llamada a la Actividad y luego deje que la Actividad decida qué hacer con la información. Si la actividad desea terminar, puede.


Cada vez que uso terminar para cerrar el fragmento, la actividad completa se cierra. De acuerdo con los documentos, los fragmentos deben permanecer mientras la actividad principal permanezca.

En cambio, descubrí que puedo cambiar las vistas de vuelta a la actividad principal usando esta declaración: setContentView (R.layout.activity_main);

Esto me devuelve a la actividad principal.

Espero que esto ayude a alguien más que pueda estar buscando esto.


Como lo mencionó , así es como un fragmento puede "cerrar" la actividad al sugerir que se cierre la actividad. Esto hace que el fragmento sea portátil ya que es el motivo. Si lo usa en una actividad diferente, es posible que no desee cerrar la actividad.

El siguiente código es un fragmento de una actividad y fragmento que tiene un botón para guardar y cancelar.

PlayerActivity

public class PlayerActivity extends Activity implements PlayerInfo.PlayerAddListener { public void onPlayerCancel() { // Decide if its suitable to close the activity, //e.g. is an edit being done in one of the other fragments? finish(); } }

PlayerInfoFragment, que contiene una interfaz que la actividad de llamada necesita implementar.

public class PlayerInfoFragment extends Fragment { private PlayerAddListener callback; // implemented in the Activity @Override public void onAttach(Activity activity) { super.onAttach(activity); callback= (PlayerAddListener) activity; } public interface PlayerAddListener { public void onPlayerSave(Player p); // not shown in impl above public void onPlayerCancel(); } public void btnCancel(View v) { callback.onPlayerCancel(); // the activity''s implementation } }


Debe usar el método getActivity () para finalizar la actividad del fragmento.

getActivity().finish();


Muy simple...

1- Solo agarra la actividad de getActivity() en el fragmento

2- Luego llamar a finish();

Así que solo getActivity().finish(); terminará la actividad de los padres.


Fragment.class no implementa finish()

Al trabajar con fragmentos, en lugar de usar esto o referirse al contexto, siempre use getActivity() . Deberías llamar