2011-03-10 15 views
10

Tengo dos archivos java. En el primero tengo mi actividad que comienza cuando la aplicación comienza. El segundo se llama "AuswahlActivity.java" y el archivo xml "auswahl.xml". Tengo este código en AuswahlActivity.java:¿Cómo iniciar una segunda actividad en Android? obteniendo el error

public class AuswahlActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     setContentView(R.layout.auswahl); 
     //Your code here 
    } 
} 

Ahora quiero empezar la actividad como esta:

Intent myIntent = new Intent(this, AuswahlActivity.class); 
this.startActivity(myIntent); 

Pero consigo el mensaje de error The constructor Intent(new View.OnClickListener(){}, Class<AuswahlActivity>) is undefined

¿Cómo consigo este trabajo ?

Respuesta

22
Intent myIntent = new Intent(this, AuswahlActivity.class);  
this.startActivity(myIntent); 

Esta parte de su código es posible situados dentro de una OnClickListener, sólo tiene que utilizar

Intent myIntent = new Intent(YouCurrentActivity.this, AuswahlActivity.class); 
YouCurrentActivity.this.startActivity(myIntent); 

La razón es, dentro de una clase anónima (su OnClickListener) this se refiere a la OnClickListener y no la actividad. .. El primer parámetro para Intención es el contexto (que debería ser la actividad), de ahí el error.

+4

La segunda referencia a esto ('this.startActivity (myIntent);') tampoco es válida. – Mudassir

+0

@Mudassir, ¡Ups! ¡fijo! :) – st0le

2

Supongo que intenta iniciar su nueva actividad dentro de OnClickListener. Es por eso que esto se refiere a OnClickListener no a la Actividad. Y es por eso que no se puede encontrar un constructor apropiado.

lo que debe utilizar

Intent myIntent = new Intent(TheCurrentActivity.this, AuswahlActivity.class); 

lugar

1

Mi conjetura es que la línea:

Intent myIntent = new Intent(this, AuswahlActivity.class); 

se produce en un OnClickListener que es una clase interna anónima de su actividad principal. Simplemente prefijo this con el nombre de clase de la actividad.

1

usarlo de esta manera

Intent myIntent = new Intent(CallerActivity.this, AuswahlActivity.class); 
CallerActivity.this.startActivity(myIntent); 

Dónde CallerActivity es el nombre de su primera actividad. Android está lanzando ese error porque puede que lo llames desde alguna clase interna.

Cuestiones relacionadas