2010-08-17 65 views
0

我是一名android初學者。爲什麼startActivity在一種方法中工作而在另一種方法中失敗?

我很努力地理解,爲什麼startActivity在從我找到的教程中複製時運行正常,並且在進行最小更改時失敗。從教程

代碼:

 
private class ButtonHandler implements View.OnClickListener { 
    public void onClick(View v) { 
     handleButtonClick(); 
    } 
} 

private void handleButtonClick() { 
    startActivity(new Intent(this, SecondAct.class)); 
} 

工程。當我嘗試將其更改爲我認爲更簡單的設計時,出現錯誤。

 
private class ButtonHandler implements View.OnClickListener { 
    public void onClick(View v) { 
     startActivity(new Intent(this, SecondAct.class)); 
    } 
} 

的錯誤是:
構造意圖(FirstTwoApps.ButtonHandler,類)是未定義

注意,所有我沒有被移動從handleButtonClick()方法中的動作到的onClick()方法。顯然這是不允許的,但我不明白爲什麼。

任何幫助,非常感謝。

回答

2

您需要將您的this引用更改爲封閉類的引用,即如果您的類名爲Main,請將其更改爲Main.this

+0

是的,我甚至都不知道在開始使用Android之前,你可以用Java來做到這一點。 +1 – iandisme 2010-08-17 15:01:57

+0

非常感謝。這固定了它。 – alockrem 2010-08-17 15:11:41

1

因爲startActivityContext的方法。在第一個示例中,它從一個Context對象運行,第二個對象從一個ButtonHandler對象運行。這是一個範圍問題。

+0

非常感謝。這有助於我理解錯誤發生的原因,這有助於我解決未來的類似問題。 – alockrem 2010-08-17 15:12:35

相關問題