2011-03-10 33 views
10

Tôi có hai tệp java. Trong lần đầu tiên tôi có hoạt động của mình bắt đầu khi ứng dụng bắt đầu. Thứ hai được gọi là "AuswahlActivity.java" và tệp xml "auswahl.xml". Tôi có mã này vào AuswahlActivity.java:Làm thế nào để bắt đầu hoạt động thứ hai trong Android? gặp lỗi

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

Bây giờ tôi muốn bắt đầu hoạt động như thế này:

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

Nhưng tôi nhận được thông báo lỗi The constructor Intent(new View.OnClickListener(){}, Class<AuswahlActivity>) is undefined

Làm thế nào để làm việc này ?

Trả lời

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

này một phần của mã của bạn có thể nằm bên trong một OnClickListener, Chỉ cần sử dụng

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

Lý do là, trong một lớp Anonymous (OnClickListener của bạn) this đề cập đến OnClickListener và không hoạt động. .. Tham số đầu tiên cho Intent là Context (nên là hoạt động), do đó có lỗi.

+4

Điều chỉnh thứ hai cho điều này ('this.startActivity (myIntent);') cũng không hợp lệ. – Mudassir

+0

@Mudassir, rất tiếc! đã sửa! :) – st0le

2

Tôi giả sử bạn cố bắt đầu hoạt động mới của mình bên trong OnClickListener. Đó là lý do tại sao điều này đề cập đến OnClickListener khi không hoạt động. Và đó là lý do tại sao một nhà xây dựng thích hợp không thể được tìm thấy.

Vì vậy, bạn nên sử dụng

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

thay

1

đoán của tôi là dòng:

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

xảy ra trong một OnClickListener đó là một lớp vô danh bên trong của Hoạt động chính của bạn. Chỉ cần tiền tố this với tên lớp của hoạt động.

1

Sử dụng nó theo cách này

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

đâu CallerActivity là tên của hoạt động đầu tiên của bạn. Android đang ném lỗi đó vì bạn có thể gọi nó từ một số lớp bên trong.

Các vấn đề liên quan