Acceder

Ver la Versión Completa : [ CONSULTA ] Error al ejecutar app en AVD


joaco_bozzalla
16/04/14, 01:17:14
Estoy empezando a meterme en el mundo de la programacion android pero tengo el siguiente problema. Cuando escribo codigo java y ejecuto la aplicacion en un AVD la app se detiene y no abre, en la consola me aparece lo siguiente:

04-15 19:02:45.731: D/dalvikvm(1028): Not late-enabling CheckJNI (already on)
04-15 19:02:46.531: D/AndroidRuntime(1028): Shutting down VM
04-15 19:02:46.531: W/dalvikvm(1028): threadid=1: thread exiting with uncaught exception (group=0xb1a3bba8)
04-15 19:02:46.631: E/AndroidRuntime(1028): FATAL EXCEPTION: main
04-15 19:02:46.631: E/AndroidRuntime(1028): Process: com.example.primeraprueba, PID: 1028
04-15 19:02:46.631: E/AndroidRuntime(1028): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.primeraprueba/com.example.primeraprueba.MainActivity}: java.lang.NullPointerException
04-15 19:02:46.631: E/AndroidRuntime(1028): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2121)
04-15 19:02:46.631: E/AndroidRuntime(1028): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2245)
04-15 19:02:46.631: E/AndroidRuntime(1028): at android.app.ActivityThread.access$800(ActivityThre ad.java:135)
04-15 19:02:46.631: E/AndroidRuntime(1028): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1196)
04-15 19:02:46.631: E/AndroidRuntime(1028): at android.os.Handler.dispatchMessage(Handler.java:10 2)
04-15 19:02:46.631: E/AndroidRuntime(1028): at android.os.Looper.loop(Looper.java:136)
04-15 19:02:46.631: E/AndroidRuntime(1028): at android.app.ActivityThread.main(ActivityThread.jav a:5017)
04-15 19:02:46.631: E/AndroidRuntime(1028): at java.lang.reflect.Method.invokeNative(Native Method)
04-15 19:02:46.631: E/AndroidRuntime(1028): at java.lang.reflect.Method.invoke(Method.java:515)
04-15 19:02:46.631: E/AndroidRuntime(1028): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:779)
04-15 19:02:46.631: E/AndroidRuntime(1028): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:595)
04-15 19:02:46.631: E/AndroidRuntime(1028): at dalvik.system.NativeStart.main(Native Method)
04-15 19:02:46.631: E/AndroidRuntime(1028): Caused by: java.lang.NullPointerException
04-15 19:02:46.631: E/AndroidRuntime(1028): at android.app.Activity.findViewById(Activity.java:18 84)
04-15 19:02:46.631: E/AndroidRuntime(1028): at com.example.primeraprueba.MainActivity.<init>(MainActivity.java:17)
04-15 19:02:46.631: E/AndroidRuntime(1028): at java.lang.Class.newInstanceImpl(Native Method)
04-15 19:02:46.631: E/AndroidRuntime(1028): at java.lang.Class.newInstance(Class.java:1208)
04-15 19:02:46.631: E/AndroidRuntime(1028): at android.app.Instrumentation.newActivity(Instrument ation.java:1061)
04-15 19:02:46.631: E/AndroidRuntime(1028): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2112)
04-15 19:02:46.631: E/AndroidRuntime(1028): ... 11 more

Si alguien me puede ayudar se lo voy a agradecer ya que estoy muy trabado con este problema.

kriogeN
16/04/14, 09:09:20
¿Qué hay en la línea 17 de MainActivity?

joaco_bozzalla
16/04/14, 21:07:24
Creo que la linea 17 es la creacion del TextView:

public class MainActivity extends ActionBarActivity {
TextView texto = (TextView)findViewById(R.id.texto);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}

Button boton = (Button) findViewById(R.id.boton);
boton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
texto.setText("El boton anda.");
}
});
}

joaco_bozzalla
17/04/14, 02:06:22
Estuve probando un poco y es solo cuando creo un proyecto con ActionBar, en los otros no me pasa. Note que cuando creo una proyecto con ActionBar, se crea un proyecto mas llamado "appcompat_v7" el cual creo que es el causante de mi problema. Queria saber porque se crea ese proyecto, para que sirve y como hacer para poder correrlo en un AVD correctamente.

h0nGoLoCo
17/04/14, 05:19:58
El error te saldrá tanto en AVD o un dispositivo, el problema según he entendido es que no has vinculado la librería de soporte appcompat_v7. Para hacerlo click derecho sobre el proyecto /propiedades/Android/Add library y ahí agregas el proyecto. Ahora en lugar de extender a tu MainActivity a Activity extiende a ActionBarActivity....

kriogeN
17/04/14, 12:54:03
h0nGoLoco, si fuese así el proyecto ni compilaría, así que ese no es el problema.

joaco_bozzalla, el problema está en la segunda línea:

TextView texto = (TextView)findViewById(R.id.texto);

Como ese código está en el ambito global de la aplicación se ejecuta antes del onCreate, y por tanto antes del setContentView, así que cuando se ejecuta la línea el resultado es NULL porque no puede encontrar a R.id.texto

Solución, quita el código de ahí y ponlo justo después del setContentView en el onCreate.

joaco_bozzalla
19/04/14, 04:50:44
Muchas gracias a todos, era el problema del TextView que lo tenia que mover de lugar.

joaco_bozzalla
19/04/14, 05:06:47
KriogeN porque me preguntaste que pasaba en la linea 17? Es decir, como te diste cuenta que el problema estaba ahi?

kriogeN
19/04/14, 09:33:05
Por esta línea del Logcat:

04-15 19:02:46.631: E/AndroidRuntime(1028): at com.example.primeraprueba.MainActivity.<init>(Main Activity.java:17)

joaco_bozzalla
19/04/14, 21:11:53
Ahh okay, muchas gracias :-)