2011-03-10 47 views
10

我有兩個java文件。在第一次,我有我的活動開始時,應用程序啓動。 第二個名爲「AuswahlActivity.java」和xml文件「auswahl.xml」。我有這樣的代碼到AuswahlActivity.java:如何在android中啓動第二個活動?得到錯誤

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

現在我要開始這樣的活動:

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

但我得到的錯誤信息The constructor Intent(new View.OnClickListener(){}, Class<AuswahlActivity>) is undefined

我如何得到這個工作?

回答

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

你的代碼,這部分可能位於OnClickListener內,只需使用

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

的原因是,匿名類(你的OnClickListener)this指Onclicklistener,而不是在活動範圍內。 Intent的第一個參數是Context(應該是活動),因此是錯誤。

+4

第二個參考('this.startActivity(myIntent);')也是無效的。 – Mudassir

+0

@Mudassir,哎呀!固定! :) – st0le

2

我假設你嘗試在OnClickListener中開始你的新活動。這就是爲什麼這是指OnClickListener而不是Activity。這就是爲什麼找不到合適的構造函數。

所以,你應該用

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

代替

1

我的猜測是該行:

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

發生在OnClickListener是一個匿名內部類主活動。前綴this加上活動的類名。

1

使用這種方式

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

哪裏CallerActivity是你的第一個活動的名稱。 Android會拋出這個錯誤,因爲你可能會從內部類中調用它。

相關問題