Android - Please, help:OnClickListener

   
Vista:

Please, help:OnClickListener

Publicado por Alvaro (3 intervenciones) el 15/06/2014 19:03:32
Hola,

estoy desarrollando una aplicación android y me encontrado con un problemilla al empezar.

Al añadir funcionalidad a un botón, la aplicación deja de funcionar. El botón se crea bien pero deja de funcionar cuando le añado el evento "onclikListener". Este es un código de prueba:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.example.ee;
 
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
 
public class MainActivity extends ActionBarActivity {
 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
 
		Button b=(Button)findViewById(R.id.button1);
		b.setOnClickListener(new OnClickListener() {
 
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				System.out.println("yes we can");
			}
		});
 
		if (savedInstanceState == null) {
			getSupportFragmentManager().beginTransaction()
					.add(R.id.container, new PlaceholderFragment()).commit();
		}
	}
 
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
 
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
 
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
 
	/**
	 * A placeholder fragment containing a simple view.
	 */
	public static class PlaceholderFragment extends Fragment {
 
		public PlaceholderFragment() {
		}
 
		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}
 
}


Espero que puedan ayudarme, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Please, help:OnClickListener

Publicado por juanki (170 intervenciones) el 16/06/2014 11:48:18
Hola

Cuando obtengas un error con una aplicación de Android, lo que tienes que hacer es mirar el LogCat, ahí tendrás toda la información sobre el error. Y es lo que debes poner aquí si quieres que alguien te ayude.

Así, sin tener ni idea de qué puede ser, ya que no adjuntaste información del LogCat, me atrevo a decir que aquí

1
2
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub System.out.println("yes we can"); } });

b vale null.

Y creo que es por que estás usando el fragment que te crea por defecto Android.

No soy ningún experto y no sé porqué google hizo que se creara ese fragment por defecto, al menos desde AndroidStudio, cuando creas el proyecto, ahora puedes escoger que no te cree el fragment.

Puedes borrar todo lo que tenga que ver con ese fragment o, si lo usas, encontré la forma de hacerlo funcionar sobrescribiendo el método onStart() de la Activity y obteniendo ahí la referencia a los diferentes controles. No sé si será una forma correcta de hacerlo, pero funciona.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Please, help:OnClickListener

Publicado por Alvaro (3 intervenciones) el 16/06/2014 13:03:29
Hola de nuevo,

muchas gracias por su respuesta. Si comento la parte del fragment sigue sin ejecutarse la aplicación, pero además, sin ese fragment, no se muestran lso elementos de la interfaz que he creado. Adjunto el LogCat:

06-16 13:03:46.656: D/AndroidRuntime(8667): Shutting down VM
06-16 13:03:46.656: W/dalvikvm(8667): threadid=1: thread exiting with uncaught exception (group=0x40018578)
06-16 13:03:46.671: E/AndroidRuntime(8667): FATAL EXCEPTION: main
06-16 13:03:46.671: E/AndroidRuntime(8667): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.subasta/com.example.subasta.MenuActivity}: java.lang.NullPointerException
06-16 13:03:46.671: E/AndroidRuntime(8667): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
06-16 13:03:46.671: E/AndroidRuntime(8667): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
06-16 13:03:46.671: E/AndroidRuntime(8667): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-16 13:03:46.671: E/AndroidRuntime(8667): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
06-16 13:03:46.671: E/AndroidRuntime(8667): at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 13:03:46.671: E/AndroidRuntime(8667): at android.os.Looper.loop(Looper.java:130)
06-16 13:03:46.671: E/AndroidRuntime(8667): at android.app.ActivityThread.main(ActivityThread.java:3687)
06-16 13:03:46.671: E/AndroidRuntime(8667): at java.lang.reflect.Method.invokeNative(Native Method)
06-16 13:03:46.671: E/AndroidRuntime(8667): at java.lang.reflect.Method.invoke(Method.java:507)
06-16 13:03:46.671: E/AndroidRuntime(8667): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
06-16 13:03:46.671: E/AndroidRuntime(8667): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
06-16 13:03:46.671: E/AndroidRuntime(8667): at dalvik.system.NativeStart.main(Native Method)
06-16 13:03:46.671: E/AndroidRuntime(8667): Caused by: java.lang.NullPointerException
06-16 13:03:46.671: E/AndroidRuntime(8667): at com.example.subasta.MenuActivity.onCreate(MenuActivity.java:37)
06-16 13:03:46.671: E/AndroidRuntime(8667): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-16 13:03:46.671: E/AndroidRuntime(8667): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
06-16 13:03:46.671: E/AndroidRuntime(8667): ... 11 more
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Please, help:OnClickListener

Publicado por juanki (170 intervenciones) el 16/06/2014 13:35:14
Claro, es que si quitas del código todo lo referente al fragment, entonces tienes que meter tu interfaz en el archivo activity_main.xml (ese creo que es el nombre pro defecto) y no en el fragment_main.xml.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Please, help:OnClickListener

Publicado por Alvaro (3 intervenciones) el 18/06/2014 01:05:13
It Works!! Muchas gracias Juanki, la clave era pasar el codigo del fragment.xml al activity.xml, después he borrado todo lo referente al fragment y listo. Muchas gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Please, help:OnClickListener

Publicado por Brian Cid (16 intervenciones) el 08/06/2016 18:35:49
Bueno amigo para hacer esto no se si te pueda servir pero para usar el metodo SetOnClickListener
en la parte donde dice.

public class MainActivity extends ActionBarActivity {

deberia de estar a si.

public class MainActivity extends ActionBarActivity implements SetOnClickListener {

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar