Ayuda con setOnClickListener y Fragment + Actionbarsherlock

  • Respuestas:1
José Lopera
  • Posts del Foro: 1

16 mar. 2014 13:30:52 vía Web

Bueno llevo varias semanas atascado en un problema, es fácil pero no consigo resolverlo, os explico:

Simplemente es un programa con un slidingmenu lateral que cuando pinchas en uno de ellos se te abre una pantalla, una cosa mas o menos así:



Mi problema es que no se por qué los botones no funcionan, en la pantalla de inicio hay dos botones LOGIN y REGISTER, el register aun no lo he implementado, pero en el LOGIN, metas los valores que metas, he puesto para que cambie el mensaje "USUARIO" a "BIENVENIDO", no es su funcionamiento pero lo he puesto así a modo prueba simplemente para ver que el botón se ejecuta cada vez que cargue ese fragment y que el boton realmente funciona.

Bien pues no funciona, el código del funcionamiento del boton estoy 100% seguro de que está bien porque lo he probado aparte, lo que no se es porqué no me deja pulsarlo. Os dejo el código a ver si alguien puede decirme algo porque estoy un poco desesperado xDDD Gracias:

MainActivity.java (Actividad principal)
1public class MainActivity extends BaseActivity{
2
3 private Fragment mContent;
4
5 public MainActivity(){
6 super(R.string.app_name);
7 }
8
9 @Override
10 public void onCreate(Bundle savedInstanceState){
11 super.onCreate(savedInstanceState);
12
13 if (savedInstanceState != null)
14 mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
15 if (mContent == null)
16 mContent = new MainView();
17
18 setContentView(R.layout.content_frame);
19 getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, mContent).commit();
20
21 setBehindContentView(R.layout.menu_frame);
22 getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new RandomList()).commit();
23
24
25 getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
26 setSlidingActionBarEnabled(true);
27
28 }
29
30 @Override
31 public void onSaveInstanceState(Bundle outState){
32 super.onSaveInstanceState(outState);
33 getSupportFragmentManager().putFragment(outState, "mContent", mContent);
34 }
35
36 public void switchContent(Fragment fragment){
37 mContent = fragment;
38 getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit();
39 getSlidingMenu().showContent();
40 }
41}

MainView.java (Fragment que se muestra donde están mis dos botones que no consigo pulsar)
1public class MainView extends SherlockFragment implements OnClickListener{
2
3 private EditText campoUsuario;
4 private EditText campoPass;
5 private TextView textoUsuario;
6 private TextView textoPass;
7
8 private int login = 0;
9
10
11 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
12
13 View view = inflater.inflate(R.layout.activity_main, container, true);
14
15 textoUsuario = (TextView) view.findViewById(R.id.textUsuario);
16 campoUsuario = (EditText) view.findViewById(R.id.editTextUsuario);
17
18 textoPass = (TextView) view.findViewById(R.id.textPass);
19 campoPass = (EditText) view.findViewById(R.id.editTextPass);
20
21 ImageButton botonLogin = (ImageButton) view.findViewById(R.id.imageButtonLogin);
22 botonLogin.setOnClickListener(this);
23
24 ImageButton botonRegister = (ImageButton) view.findViewById(R.id.imageButtonRegister);
25 botonRegister.setOnClickListener(this);
26
27
28 return inflater.inflate(R.layout.activity_main, container, false);
29 //return view;
30 }
31
32 private void switchContent(Fragment fragment){
33 MainActivity ma = (MainActivity) getActivity();
34 ma.switchContent(fragment);
35 }
36
37 @Override
38 public void onClick(View v) {
39
40 // TODO Auto-generated method stub
41 Fragment newFragment = new MainView();
42 FragmentManager fm = getFragmentManager();
43 Log.i("ENTRAONCLICK","ENTRAONCLICK");
44 switch(v.getId())
45 {
46 case R.id.imageButtonLogin: //newFragment = new MainView();
47 login = checkLogin(campoUsuario.getText(), campoPass.getText());
48 break;
49
50 case R.id.imageButtonRegister:
51 newFragment = new Register();
52 if (newFragment != null)
53 {
54 switchContent(newFragment);
55 }
56
57 FragmentTransaction ft = fm.beginTransaction();
58
59 ft.replace(R.id.content_frame, newFragment);
60 ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
61 ft.show(newFragment);
62 ft.commit();
63
64 break;
65 }
66
67 if(login == 1)
68 textoUsuario.setText("BIENVENIDO");
69
70
71 }
72
73 private int checkLogin(Editable text, Editable text2) {
74 // TODO Auto-generated method stub
75
76 Log.i("ENTRALOG", "ENTRALOG");
77 //BUSQUEDA SQL AL SERVIDOR Y COMPROBAR SI ES CORRECTO EL USUARIO Y LA CONTRASEÑA
78
79 return 1;
80 }
81
82}

RandomList (Clase del sliding menú que hace los replaces y transacciones)
1public class RandomList extends Fragment implements View.OnClickListener{
2
3 String[] list_contents = {
4 "Principal",
5 "Destinos",
6 "Tipos de viajes",
7 "Nuestra seleccion",
8 "Viajes a medida",
9 "Sobre Kikahle"
10 };
11
12 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
13
14 //View view = inflater.inflate(R.layout.list, container);
15
16 View view = inflater.inflate(R.layout.list, container, false);
17
18
19 ImageButton buttonItem1 = (ImageButton) view.findViewById(R.id.buttonItem1);
20 buttonItem1.setOnClickListener(this);
21
22 ImageButton buttonItem2 = (ImageButton) view.findViewById(R.id.buttonItem2);
23 buttonItem2.setOnClickListener(this);
24
25 ImageButton buttonItem3 = (ImageButton) view.findViewById(R.id.buttonItem3);
26 buttonItem3.setOnClickListener(this);
27
28 ImageButton buttonItem4 = (ImageButton) view.findViewById(R.id.buttonItem4);
29 buttonItem4.setOnClickListener(this);
30
31 ImageButton buttonItem5 = (ImageButton) view.findViewById(R.id.buttonItem5);
32 buttonItem5.setOnClickListener(this);
33
34 ImageButton buttonItemInicio = (ImageButton) view.findViewById(R.id.buttonItemInicio);
35 buttonItemInicio.setOnClickListener(this);
36
37 ImageButton buttonItemAccount = (ImageButton) view.findViewById(R.id.buttonItemAccount);
38 buttonItemAccount.setOnClickListener(this);
39
40 return view;
41 }
42
43 private void switchContent(Fragment fragment){
44 MainActivity ma = (MainActivity) getActivity();
45 ma.switchContent(fragment);
46 }
47
48 @Override
49 public void onClick(View v) {
50 // TODO Auto-generated method stub
51 Fragment newFragment = new MainView();
52 FragmentManager fm = getFragmentManager();
53
54
55 switch(v.getId())
56 {
57 case R.id.buttonItem1: newFragment = new Item1();
58 break;
59
60 case R.id.buttonItem2: newFragment = new Item2();
61 break;
62
63 case R.id.buttonItem3: newFragment = new Item3();
64 break;
65
66 case R.id.buttonItem4: newFragment = new Item1();
67 break;
68
69 case R.id.buttonItem5: newFragment = new Item5();
70 break;
71
72 case R.id.buttonItemInicio: newFragment = new MainView();
73 break;
74
75 case R.id.buttonItemAccount: newFragment = new Register();
76 break;
77 }
78
79
80 if (newFragment != null)
81 {
82 switchContent(newFragment);
83 }
84
85 FragmentTransaction ft = fm.beginTransaction();
86
87 ft.replace(R.id.content_frame, newFragment);
88 ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
89 ft.show(newFragment);
90 ft.commit();
91 }
92}

Contestar
Antonio Miñano Belmonte
  • Posts del Foro: 2

1 jun. 2014 2:02:38 vía Web

debajo de la clase del metodo
private Fragment fragment

en vez de tu boton de login.

((ImageButton) View.findViewById(R.id.imageButtonLogin))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
fragment = new HomeFragment(); //Aqui tienes que poner al fragment que quieres saltar
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
//R.id.content_frame es el nombre del FrameLayout que hay en el DrawerLayout en tu xml

           }
       }
    });

— modificado el 1 jun. 2014 2:05:13

Contestar