Forzar el cierre al iniciar una nueva actividad

Estoy tratando de iniciar una nueva actividad desde mi actividad principal, pero recibo códigos de error todo el tiempo.

Esta es mi actividad principal;

   package com.gunstats;



import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class gunstats extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 


        final MediaPlayer mp = MediaPlayer.create(this, R.raw.deagle);

        Button button3 = (Button)this.findViewById(R.id.button3);
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.start();


            }

        });

        final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.ak47);

        Button button2 = (Button)this.findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp2.start();

            }

        });


        final MediaPlayer mp3 = MediaPlayer.create(this, R.raw.m40a3);

        Button button1 = (Button)this.findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp3.start();

            }
        });



        Button button4 = (Button)findViewById(R.id.button4);
                button4.setOnClickListener(new Button.OnClickListener() {
                    public void onClick(View v) {

                        Intent intent = new Intent(gunstats.this,
                                more.class);
                                                 startActivity(intent);
                                            }
                                        });

    }

}

y la actividad que se llama desde mi clase principal;

package com.gunstats;



import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;


public class more extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 


        final MediaPlayer mp = MediaPlayer.create(this, R.raw.deagle);

        Button buttonm1 = (Button)this.findViewById(R.id.buttonm1);
        buttonm1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.start();


            }

        });


    }

}

Manifiesto

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.gunstats"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".gunstats"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />


            </intent-filter>


         </activity>

                                  <activity android:name=".more"/>

    </application>

    <uses-sdk android:minSdkVersion="4" />

</manifest> 

Logcat:

01-08 17:37:47.658: ERROR/AndroidRuntime(276): Uncaught handler: thread main exiting due to uncaught exception
01-08 17:37:47.728: ERROR/AndroidRuntime(276): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gunstats/com.gunstats.more}: java.lang.NullPointerException
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at android.app.ActivityThread.access$2100(ActivityThread.java:116)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at android.os.Looper.loop(Looper.java:123)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at android.app.ActivityThread.main(ActivityThread.java:4203)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at java.lang.reflect.Method.invokeNative(Native Method)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at java.lang.reflect.Method.invoke(Method.java:521)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at dalvik.system.NativeStart.main(Native Method)
01-08 17:37:47.728: ERROR/AndroidRuntime(276): Caused by: java.lang.NullPointerException
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at com.gunstats.more.onCreate(more.java:23)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
01-08 17:37:47.728: ERROR/AndroidRuntime(276):     ... 11 more

El error apunta a mi línea 23 en la clase 'más'.

mi línea 23 es; buttonm1.setOnClickListener (nuevo View.OnClickListener () {

¿Cuál es incorrecto?

preguntado el 08 de enero de 11 a las 16:01

2 Respuestas

Y no hay nada de malo en el manifiesto

Creo que probablemente lo haya. Esta línea de error:

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.gunstats/com.gunstats.more}; have you declared this activity in your AndroidManifest.xml? 01-08

Sugiere que no ha definido el Activity "más" en el manifiesto. Comprueba que esté definido.

Además, la convención de Java es que los nombres de clases tienen la primera letra en mayúscula. Entonces la clase debería llamarse More.

Respondido el 08 de enero de 11 a las 19:01

Alex, suena como findViewById(R.id.buttonm1) está regresando null. Asegúrese de tener definitivamente un botón con la identificación @+id/buttonm1 in res/layout/main.xml. - David

@Alex: estás intentando usar un objeto nulo, intenta averiguar qué objeto es nulo. Es probablemente buttonm1. - Mentira ryan

Wops, línea incorrecta, mi línea 23 (donde está el error); button3.setOnClickListener (new View.OnClickListener () {Todos los botones están en el archivo xml correcto. - Alex

Esa línea no aparece en el código que publicó. Dado que su problema original ahora está solucionado, ¿quizás sería mejor que comenzara una nueva pregunta para el nuevo problema? - dave.c

En realidad, no ha dicho cuál es el error en esa línea. Si es un NullPointer entonces debe seguir la sugerencia que hizo Dave en el comentario anterior. - dave.c

Debe agregar "más" Actividad al archivo AndroidManifest.xml

Respondido el 08 de enero de 11 a las 20:01

Hola. Está en mi manifiesto, pero todavía no funciona: / - Alex

Hola Alex, ¿su actividad 'más' se refiere al paquete correcto donde existe 'más' actividad? ¡Por favor revise su paquete de manifiesto también! - BantenCity

Hmm, lo siento, pero realmente no sé a qué te refieres. Una vez que he creado una nueva actividad, simplemente pongo " "en el manifiesto. ¿Hay algo más que deba hacer? - Alex

@Alex: edite su pregunta y publique el contenido XML de su manifiesto. Esto eliminará todas las confusiones. también, verifique el "paquete xyz" (debería ser la primera línea de cada archivo de clase de actividad) y publíquelos también. - Sarwar Erfan

Me refiero a que su paquete de manifiesto debería ser el mismo con su actividad 'más'. ej .: paquete = "com.bsoft.activity" y la actividad es . por lo que el punto (.) en android: nombre ".SplashActivity" se refiere al paquete "com.bsoft.activity" - BantenCity

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.