2012-06-07 54 views
0

我試圖製作一個應用程序,當觸摸屏幕時它會調用一個新的意圖。 我有捕獲視圖類中的觸摸事件的代碼。當我嘗試創建一個新的intent時,Intent(this,cYesNoDisplay.class);,我得到一個錯誤,說構造函數是未定義的,我假設構造函數沒有在視圖基類中定義,但Activity類?Android,試圖從觸摸事件中調用新的意圖

我很困惑如何做到這一點,有沒有辦法讓我的View類是intent類的成員,調用它一些怎麼樣?我認爲,必須有一個這樣做,仍然學習Java。 Ted

回答

4

您對視圖課程的評價是,您在問題中是正確的。爲了得到它的工作,請執行以下操作:

Intent i = new Intent(NameOfYourActivity.this, cYesNoDisplay.class); 

將[NameOfYourActivity]替換爲您所在活動的名稱。

編輯:我可能誤解了你在做什麼。如果你實際上構建了你自己的View類並且重寫了onTouch(),你實際上需要做一點改變。

如果您還沒有將其添加:

Context ctx; 

到類的聲明。

在您的構造函數中對其進行更改以存儲傳入的上下文,作爲您聲明的ctx引用中的參數。

public [ClassName] (Context c){ 
    this.ctx = c; 
} 

然後onTouch()裏面做這樣的:再次

Intent i = new Intent(ctx, cYesNoDisplay.class); 
ctx.startActivity(); 

編輯:你必須使用ctx.startActivity(i);的原因是,startActivity()是上下文的方法。由於活動上下文,因此當您從活動內部調用它時,不必將任何內容放在它的前面。但是,當你在另一個類的「內部」時,你必須使用對Context的引用來調用該方法。

+0

謝謝你的幫助,但我仍然無法得到它的工作。你的代碼編譯好Intent i = new Intent(ctx,cYesNoDisplay.class);我添加了以下行來啓動intent startActivity(i); 。這給我一個編譯錯誤,說方法不存在。 -Tel –

+0

對不起,你需要做ctx.startActivity(i);我在剛纔的回答中添加了這個編輯。 – FoamyGuy

1

使用此。這項工作在我的項目中很好。

Intent i = new Intent(NameOfYourActivity.this,cYesNoDisplay.class); startActivity(i);