PDA

Ver la Versión Completa : Ussar Intent dentro de un fragment class


kakashi20
15/07/14, 01:03:43
Estoy usando los tabs de action bar y lo que hacer es cuando estoy en una de las opciones de mi tab, osea en un fragment, tener un botón en ese fragment y cuando haga clic en el ir a otra actividad, pero tengo un error en mi Intenten que me dice que no está definido.

Alguien me puede ayudar?

Muchas gracias.

package com.example.dona1click;

import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;


public class Nosotros extends Fragment {
Button Btn;
Intent intent;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View x = inflater.inflate(R.layout.nosotros, container, false);

Btn = (Button)x.findViewById(R.id.button1);

Btn.setOnClickListener(new OnClickListener() { // evento clic del boton

@Override
public void onClick(View v) {

// al hacer clic se manda para la otra pagina


intent = new Intent (this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

//---------------------------------------------


}

});

return x;
}
}

kriogeN
15/07/14, 07:26:48
En vez de:

new Intent (this, MainActivity.class);

pon:

new Intent (getActivity(), MainActivity.class);

Por cierto que ese código tampoco te funcionaría en una Activity, porque "this" en ese contexto es el OnClickListener, si Nosotros fuese una Activity habría que poner "Nosotros.this"

EDITO:

Por cierto también, en este caso da igual, pero no es conveniente llamar a una nueva Activity directamente desde el Fragment, en su lugar es mejor hacerlo a través de la Activity que lo contiene, es decir, usando:

getActivity().startActivity(intent);

Repito que en este caso da igual, pero si fuese un startActivityForResult te encontrarías con el problema de que el requestCode sería distinto al que pusiste originalmente.

kakashi20
18/07/14, 17:03:06
gracias por la ayuda y respuesta. Me sirvió de mucho.