Cómo acceder a FragmentManger desde el contexto de una clase que no extiende FragmentActivity

Estoy desarrollando una aplicación de Android en la que necesito iniciar un Fragmento de la clase que no extiende FragmentActivity . Estoy usando el paquete de soporte v4. Tendré el contexto en mi clase actual. ¿Alguien puede ayudarme a crear un objeto FragmentManager a partir del contexto actual?

public ToolBarGenerator(Context c)
{
      context = c;
}

FragmentManager fm = (FragmentActivity)context.getSupportFragmentManager(); //getting error at this line.
//Called like the above
new ToolBarGenerator(getActivity())

preguntado el 12 de junio de 12 a las 19:06

2 Respuestas

Si Context tienes es de la FragmentActivity, puedes lanzarlo a FragmentActivity, aunque no sé a ciencia cierta si ese es tu caso.

Dicho esto, parece que lo que estás haciendo es una mala práctica. Mantendría todas las transacciones de fragmentos dentro del FragmentActivity clase. Si otra clase necesita solicitar una diferente Fragment que se muestra, debe usar devoluciones de llamada o algo similar.

Respondido el 12 de junio de 12 a las 19:06

public ToolBarGenerator(Contexto c){contexto =c;} //MyClass FragmentManager fm = (FragmentActivity)context.getSupportFragmentManager(); Me gustó lo anterior pero recibo un error: user1276092

Cambiar el parámetro de Context a FragmentActivity y pasar eso como un parámetro en su lugar. - jason robinson

Con contexto no se puede convertir a android.support.v4.app.FragmentActivity - user3402040

Acabo de responder esto en otro hilo, pero esto puede ayudar a otros. Estaba en una situación tal vez similar a la tuya sin respuestas precisas sobre cómo evitar tener una Adapter clase separada de la FragmentActivity clase, mientras que necesita acceder a la getSupportFragmentManager() dentro del adaptador.

Pasar el contexto no funcionó porque no permite la conversión de FragmentActivity (por razones que aún no entiendo).

Pero me di por vencido y simplemente guardé el acceso al administrador y lo llamé directamente:

public ViewPagerAdapter(Context context, FragmentManager fm, Fragment f) {
    super(fm);  
    _fm = fm; // declared in the class "private FragmentManager _fm;"
    _context=context;       
}

Respondido el 17 de diciembre de 12 a las 17:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.