2011-03-10 8 views
10

Ho due file java. Nel primo ho la mia attività che inizia quando l'app inizia. Il secondo è chiamato "AuswahlActivity.java" e il file xml "auswahl.xml". Ho questo codice in AuswahlActivity.java:Come avviare la seconda attività in Android? ricevendo l'errore

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

Ora voglio iniziare l'attività in questo modo:

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

Ma ottengo il messaggio di errore The constructor Intent(new View.OnClickListener(){}, Class<AuswahlActivity>) is undefined

Come faccio ad avere questo lavoro ?

risposta

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

Questa parte del codice è possibile trova all'interno di un OnClickListener, Basta usare

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

La ragione è, all'interno di una classe anonima (il vostro OnClickListener) this si riferisce alla Onclicklistener e non l'attività. .. Il primo parametro per Intent è il contesto (che dovrebbe essere l'attività), quindi l'errore.

+4

Anche il secondo riferimento a questo ('this.startActivity (myIntent);') non è valido. – Mudassir

+0

@Massassir, whoops! fisso! :) – st0le

2

Suppongo che tu provi ad avviare la tua nuova attività all'interno di OnClickListener. Ecco perché questo si riferisce a OnClickListener su non all'attività. Ed è per questo che non è possibile trovare un costruttore appropriato.

Così si dovrebbe usare

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

invece

1

La mia ipotesi è che la linea:

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

si verifica in un OnClickListener che è una classe interna anonima della vostra attività principale. Basta prefisso this con il nome della classe dell'attività.

1

usarlo in questo modo

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

Dove CallerActivity è il nome della vostra prima attività. Android sta lanciando quell'errore perché potresti chiamarlo da qualche classe interiore.

Problemi correlati