Navegar entre fragmentos dentro de una actividad

Me gustaría usar una actividad que contiene varios fragmentos y navegar entre los fragmentos. Por ejemplo, en la actividad, hay una vista de lista que es un fragmento, cuando el usuario selecciona un elemento de la lista, la vista navegará a otro fragmento, ¿Cómo podría implementarse?

Sé que hay un buen tutorial en el sitio del desarrollador, pero se encarga de la pantalla de la tableta en la que el diseño de dos paneles con un fragmento de lista y un fragmento detallado que muestra en una pantalla. Sólo quiero navegar entre fragmentos sin mostrar dos fragmentos en una sola pantalla.

¿Hay tutoriales puede enseñarme cómo hacerlo?

En la cáscara de nuez la respuesta a su pregunta es notificar su actividad del anfitrión y después hacer su actividad del anfitrión substituir su contenedor actual del fragmento usando FragmentManager.

Uno de los enfoques es crear una interfaz en su primer fragmento, tener su actividad de host registrar / escuchar (implementar) en esta interfaz y luego tener su FragmentManager para reemplazar el contenido del contenedor con el segundo fragmento en la devolución de llamada del oyente.

No estoy seguro acerca del tutorial, pero aquí está mi fragmento: First Fragment

public class First extends Fragment{ private static onMySignalListener listener; //call this function from whatever you like ie button onClickListener public void switchWindow() { if(listener != null){ listener.onMySignal(); } } public interface onMySignalListener { //customize this to your liking //plain without argument void onMySignal(); //with argument void onMySignalWithNum(int mNum); } public static void setOnMySignalListener(onMySignalListener listener) { First.listener = listener; }} 

Actividad del anfitrión

 public class HostActivity extends FragmentActivity implements onMySignalListener{ private final String ADD_TAG_IF_NECESSARY = "mTag"; @Override public void onCreate(Bundle ssi) { setContentLayout(R.layout.main); FirstFragment.setOnMySignalListener(this); } @Override public void onMySignal() { //if you're using compat library FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); //initialize your second fragment sfragment = SecondFragment.newInstance(null); //replace your current container being most of the time as FrameLayout transaction.replace(R.id.container, fragment, ADD_TAG_IF_NECESSARY); transaction.commit(); } @Override public void onMySignalWithNum(int mNum) { //you can do the same like the above probably with your own customization }} 

Esto es sólo un ejemplo de cómo implementar la interfaz, por favor, ordénelo por usted mismo. Y tenga en cuenta, sin embargo, que esto no es eficaz si usted tiene un montón de fragmentos que quieren notificar su actividad de acogida acerca de algo. Al hacerlo, te llevará a implementar varios oyentes en tu actividad de host.

 I think this will be useful for you. example of two fragments in one screen works independently =========================================================== public class MainActivity extends Activity { enter code here @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); Fragment newFragment = new Test(); FragmentTransaction transaction = getFragmentManager() .beginTransaction(); transaction.add(R.id.UprLayout, newFragment); // transaction.addToBackStack(null); transaction.commit(); Fragment newFragment2 = new TestRight(); FragmentTransaction transaction2 = getFragmentManager() .beginTransaction(); transaction2.add(R.id.dwnLayout, newFragment2); // transaction.addToBackStack(null); transaction2.commit(); } } ----------------------------- main_activity layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout2" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center|center_horizontal" android:orientation="vertical" > <LinearLayout android:id="@+id/UprLayout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical" > </LinearLayout> <LinearLayout android:id="@+id/dwnLayout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical" > </LinearLayout> </LinearLayout> ------------------------------------ public class Test extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } TextView tv; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.test, container, false); return view; } } --------------------------- public class TestRight extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.test_right, container, false); return view; } @Override public void onStart() { super.onStart(); Button button = (Button)getActivity().findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Fragment newFragment = new Right2nd(); FragmentTransaction transaction = getFragmentManager() .beginTransaction(); transaction.replace(R.id.dwnLayout, newFragment); transaction.addToBackStack("aa"); transaction.commit(); // transaction.add(R.id.frag, newFragment).commit(); } }); } } ------------------------------- test layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="test" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="50sp" /> </LinearLayout> ------------------------------------ test_right layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Test right" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="45sp" /> </LinearLayout> ------------------------------------- public class Right2nd extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View vw= inflater.inflate(R.layout.right_2nd, container, false); return vw; } } ------------------------------------------- right_2nd layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Right 2nd" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="50sp" /> </LinearLayout> -------------------------------------------- 
  • Selector con android: drawable = atributo "@ color / transparent"
  • RatingBar - Alternar o deshacer
  • ¿Cómo hacer que el trasfondo de una actividad sea translúcido?
  • Valor igual a match_parent o fill_parent en dimens.xml?
  • Cómo ocultar la interfaz de usuario en android
  • Problema con GridView con ImageViews y TextViews
  • Obtener mapa de bits de ImageView en Android L
  • Fragmento de fragmento de Android como fragmento de diálogo o fragmento habitual
  • Layout duplicando a sí mismo en la rotación de la pantalla
  • Hacer el dibujo del cajón de navegación detrás de la barra de estado
  • Fragmentos, con el mismo menú, en el mismo diseño causa duplicado menuitem
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.