Configurar la vista de Android en la que se puede hacer clic

Configuré una actividad de bienvenida que inicia otra actividad después de unos segundos. De todos modos, quería agregar una capacidad más: iniciar la segunda actividad no solo después de 5 segundos, sino también después de hacer clic en mi vista de bienvenida. Tan pronto como configuré el siguiente:

View v = (View)findViewById(R.layout.splash); 
    v.setOnClickListener(this);
    setContentView(v);

en lugar de

setContentView(R.layout.splash);

mi proyecto no se ejecuta. ¿Dónde está el problema?

Aquí está mi código:

public class SlashC extends Activity implements Runnable, OnClickListener {
Thread timer;
MediaPlayer hTree;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View v = (View)findViewById(R.layout.splash); // problems start here
    v.setOnClickListener(this);
    setContentView(v);

    hTree = MediaPlayer.create(this, R.raw.happy_tree);
    hTree.start();
    timer = new Thread(this);
    timer.start();

}
public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent class2 = new Intent("com.roger.calc.MainActivity");
    startActivity(class2);
}
public void run() {
    // TODO Auto-generated method stub
    try {
        timer.sleep(5000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        Intent class2 = new Intent("com.roger.calc.MainActivity");
        startActivity(class2);
    }       
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    hTree.release();
    finish();
}}

y XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/splash2"
android:clickable="true" >
</LinearLayout>

preguntado el 28 de julio de 12 a las 13:07

4 Respuestas

Haga que se pueda hacer clic en LinearLayout configurando el atributo de diseño android:clickable="true", android:focusable="true" y android:focusableInTouchMode="true" desde xml o setClickable(true) del código. establecer onClickListener como

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/splash"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusableInTouchMode="true"
    android:clickable="true"
    android:focusable="true" 
    android:orientation="vertical"
    android:background="@drawable/splash2"/>

y en la parte del código:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    ((LinearLayout)findViewById(R.id.splash)).setOnClickListener(this);

    /// YOUR CODE HERE

Respondido el 11 de diciembre de 14 a las 21:12

También agregué un si la declaración en mi hilo De lo contrario, la segunda actividad se cargó dos veces. - Andrés

tienes android:clickable="true" dos veces en el xml de arriba - Nashenas

¿Por qué necesitamos configurar algo como clicable? Seguramente cuando agregamos un oyente, ¿se puede hacer clic en él? - LifeQuestioner

puede ser que te estés perdiendo esto en tu diseño xml

android:id="@+id/splash"

Respondido 28 Jul 12, 13:07

XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/splash2"
android:id="@+id/splash"
android:clickable="true" >
</LinearLayout>

setContentView(R.diseño.nombre);

Linearlayout v = (LinearLayout)findViewById(R.layout.splash);

v.setOnClickListener(esto);

Respondido 28 Jul 12, 13:07

Uso de Rajesh Linearlayout v = (LinearLayout)findViewById(R.id.splash); en lugar de Linearlayout v = (LinearLayout)findViewById(R.layout.splash); - ρяσѕρєя K

¡Gracias, amigos! Eso es lo que necesito. - Andrés

No puedes usar el findViewById(int id) antes setContentView() un inflador de diseño sería de ayuda también establecer android:clickable="true", android:focusable="true" y android:focusableInTouchMode="true" en el diseño.

Respondido el 12 de Septiembre de 15 a las 00:09

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