Android: dos botones diferentes que llaman a dos clases diferentes no funcionan correctamente

Este es un tema muy ingenuo. Quiero llamar a dos clases diferentes desde dos botones diferentes. El siguiente código funciona bien, pero el GalleryView.clase se ejecuta solo una vez. En el momento en que llamo al SeleccionarImagen.clase que es un diálogo que parece funcionar bien, pero el otro aparece solo una vez. Por favor, arroje algo de luz sobre esto.

Gracias y saludos Avijit Paul

private Button button,button1;
public static String filename = "prefs";
SharedPreferences prefs;

public vp_default() 
{
    // TODO Auto-generated constructor stub
}

 public void onCreate(Bundle savedInstanceState) 
    {       
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);   
        prefs = getSharedPreferences(filename,0);

        button  = (Button)findViewById(R.id.view_gallery_button);
        button.setOnClickListener(this);

        button1  = (Button)findViewById(R.id.sel_image_button);
        button1.setOnClickListener(this); 

    }

    @Override
    public void onClick(View v) 
    {
            String setPhnNo = "9231512345";
            boolean stat = prefs.contains(setPhnNo);

            switch(v.getId())
            {
             case R.id.view_gallery_button:     
                    if(stat!=false)
                    {

                        startActivity(new Intent(getApplicationContext(), VirtualPainterActivity.class));

                    }
                    else
                    {
                        startActivity(new Intent(getApplicationContext(), GalleryView.class));


                    }
                break;
                case R.id.sel_image_button: 
                        startActivity(new Intent(getApplicationContext(), SelectImage.class));

                break;
            }

    }

}

//manifiesto.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="mcc.vp.apps"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
         <activity
            android:label="@string/app_name"
            android:name=".vp_default" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity> 
        <activity
            android:label="@string/app_name"
            android:name=".VirtualPainterActivity"
            android:theme="@android:style/Theme.Dialog">
            <intent-filter >
                <action android:name="android.intent.action.vp_regn" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:label="@string/app_name"
            android:name=".GalleryView">
            <intent-filter >
                <action android:name="android.intent.action.vp_gview" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:label="@string/app_name"
            android:name=".SelectImage" >
            <intent-filter >
                <action android:name="android.intent.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:label="@string/app_name"
            android:name=".ViewImage">
            <intent-filter >
                <action android:name="android.intent.vp_view_img" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

preguntado el 03 de mayo de 12 a las 14:05

¿Qué quieres decir con "parece estar funcionando bien, pero el otro aparece solo una vez" ... tiene que aparecer más de una vez? -

Quiero decir que onOnClickListener para view_gallery_button se está ejecutando al menos una vez, pero en el momento en que vuelvo a mi actividad principal, OnClickListener ya no funciona. -

¿Le da un error? o simplemente no arranca? ¿Has depurado para ver si se activa el evento onClick? -

No, no recibí ningún error. Sí, lo depuré y lo verifiqué en el emulador, el evento onClick se ejecuta solo una vez en view_gallery_button pero sel_image_button se ejecuta cada vez que hago clic en él. -

Me preguntaba por qué estás usando stat!=false si puedes usar !stat. -

2 Respuestas

Finalmente lo resolví... El problema estaba en el archivo de manifiesto... He declarado "action.MAIN" dos veces... y el botón sigue iterando la actividad predeterminada... De todos modos, gracias a todos por su tiempo... @ Perroloco @Akki @Zaz Gmy

contestado el 13 de mayo de 12 a las 19:05

No sé cuál es el error, pero prueba lo siguiente:

poner el oyente directamente en el método onCreate como este

button1.setOnClickListener(new OnClickListener(){
   @Override
    public void onClick(View v) 
    {
    YOUR CODE FOR BUTTON 1
    }


});

Y haz lo mismo con el botón ;)

contestado el 03 de mayo de 12 a las 14:05

Intenté el código anterior, pero sigue siendo el mismo. Tenga en cuenta que no hay ningún error en ninguno de los códigos dados anteriormente. Dos botones que llaman a dos actividades diferentes. Uno de ellos se ejecuta cada vez que se hace clic, pero el otro se ejecuta solo a la vez. . - potupaul

ok, esto es solo para probar, pero intente configurar onclicklistener en el método onResume. - Sebastián Breit

¿Qué se supone que debo escribir en el método onResume?... No tengo idea de cómo funciona el oyente de clics en eso. - potupaul

ok, en tu actividad, mueve el código button.setOnClickListener(new Oncl...) al método onResume... ¡eso es todo! - Sebastián Breit

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