Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Adición de fragmentos dinámicamente

Estoy completamente confundido. De acuerdo con esto y esto y muchas otras fuentes, tanto en SO como en otros lugares, debería ser capaz de hacer lo siguiente:

import android.os.Bundle; import android.app.Activity; import android.app.FragmentTransaction; import android.view.Menu; public class MainScreenActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_screen); MainRightFragment mrf = new MainRightFragment(); RecommendedFragment rf = new RecommendedFragment(); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.add(R.id.main_search_boxes, mrf, "fragmentright"); ft.add(R.id.main_left_side, rf, "fragmentreccomend"); } 

}

Las referencias R.id apuntan a objetos FrameLayout en mi archivo .xml. ¿Por qué todavía estoy obteniendo " el método add (int, Fragment, String) en el tipo FragmentTransaction no es aplicable para los argumentos (int, RecommendedFragment, String) " mensaje de error?

4 Solutions collect form web for “Adición de fragmentos dinámicamente”

Su MainScreenActivity debe extender FragmentActivity y no sólo Activity . Además, no olvide llamar ft.commit();

Para agregar fragmentos en Runtime es necesario que amplíe su actividad principal desde: android.support.v4.app.FragmentActivity

Y necesitas usar las clases FragmentManager y FragmentTransaction del paquete android.support.v4.app , en lugar de android.app.

Además, cuando obtenga el FragmentManager utilice el método getSupportFragmentManager (). Vea el siguiente código:

 FragmentManager fm = getSupportFragmentManager(); FragmentTop fragTop = new FragmentTop(); FragmentLeft fragLeft = new FragmentLeft(); FragmentTransaction ft = fm.beginTransaction(); ft.add(R.id.fragTop, fragTop); ft.add(R.id.fragLeft, fragLeft); ft.commit(); 

Referencia: http://developer.android.com/intl/pt-br/training/basics/fragments/fragment-ui.html

Esto es más una capitulación que una respuesta, pero pude conseguir lo que quería usar FragmentActivity / support.v4.app. Aún no entiendo por qué las referencias que he citado anteriormente parecen decir que es posible utilizar la función .add (…) con la API moderna.
Ambos harsha.cs y Damien apuntan a FragmentActivity, así que hasta que alguien explique por qué es necesario usar la API de compatibilidad con versiones anteriores, les daré los dos puntos y aguantaré la comprobación de una respuesta.

Prueba esto.

 FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.add(FragmentA.this.getParent().getID(), mNewFragment,"your frame name"); ft.addToBackStack(null); ft.commit(); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.