0 votos

Hola buenas tardes, tengo un código que parece que se ha quedado un poco desfasado, y ahora al probarlo me esta dando un error que no se como cambiarlo para poder utilizarlo.

Intento poner un menú dentro de un Fragment, pero como muestro en la imagen me está dando un error.

Y este es el código:

Fragment[] misFragmentos;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_actividad_herramientas);

    misFragmentos = new Fragment[3];

    misFragmentos[0]=new Fragmente1();
    misFragmentos[1]=new Fragmente2();
    misFragmentos[2]=new Fragmente3();

    Bundle extras = getIntent().getExtras();

    menu(extras.getInt("BOTONPULSADO"));
}

@Override
public void menu(int queboton) {
    FragmentManager miManejador = getSupportFragmentManager();
    FragmentTransaction miTransacion = miManejador.beginTransaction();

    miTransacion.replace(R.id.herramientas, misFragmentos(queboton));
    miTransacion.commit();

}

Como se puede corregir ese error?

Gracias.

por en Android
editado por

1 Respuesta

+1 voto
Mejor respuesta

misFragmentos es un "Fragment[]" que es un array, para llamar a una posición de un array en Java usa:

int posicion = 10;
Fragment miFragmento = misFragmentos[posicion];

 

por
seleccionada por

Intento cambiar el codigo con el que tu pones, pero me esta dando mas errores.

y lo que dices, no es lo mismo que 

Fragment[] misFragmentos;
misFragmentos = new Fragment[3];

Hola Ramon, me tengo que marchar y quería ponerte este código, que parece que funciona, aunque solo lo he probado una vez para intentar quitar ese error, y puede que veas este mensaje antes de que mañana pueda probarlo.


No sé si te refieres a esto:

@Override
public void menu(int queboton) {
    FragmentManager miManejador = getSupportFragmentManager();
    FragmentTransaction miTransacion = miManejador.beginTransaction();

    Fragment miFrag = misFragmentos[queboton];
    miTransacion.replace(R.id.herramientas, miFrag);

    miTransacion.commit();

}

 

Sí, justo me refería a esto último, a obtener una posición de un array.

De cualquier manera, personalmente me gusta más utilizar listados en vez de arrays para evitar estos temas, entre otras bondades de los listados.
Gracias Ramon, esto empezó como proyecto para crear un menú horizontal, ya tengo creado un menú horizontal con viewpager2, pero la intención es crear un segundo menú debajo del primero, no sé si para este caso se podría hacer un listado con fragment.

Se podría algo así:

List<Fragment> misFragmentos = new ArrayList<Fragment>();