2011-01-24 48 views
1

我想這只是一個簡單的問題(我是這樣一個noob ...) 我有這個自定義對話框中有3個按鈕。從自定義對話框調用一個活動

現在我想從一個按鈕調用活動,這樣 我嘗試這樣做:

public class picturedialog extends Dialog implements OnClickListener { 
    Button Camera; 

    public picturedialog (Context context){ 
     super (context); 
     setContentView(R.layout.picturedialog); 

     Camera = (Button) this.findViewById(R.id.pdButton1); 

     Camera.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       dismiss(); 

       Intent myIntent = new Intent(view.getContext(), CameraActivity.class); 
       startActivity(myIntent); 

      } 
     }); 
... 
} 

然後紅色的波浪線出現在startActivity(myIntent)。 在它上面盤旋時,eclipse告訴我這一點:「方法startActivity(Intent)未定義爲類型new View.OnClickListener(){}」 Ehhh?請告訴我如何正確地做到這一點。 任何幫助,將不勝感激。

回答

1

我相信你從Dialog的子類化過於複雜。嘗試按照對話框教程 - https://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog

請注意,對話框是在飛行中創建的(在Activity.onCreateDialog()),無需擁有自己的自定義對話框類。由於您在包裝活動中設置了一個偵聽器(如果您遵循本教程),那麼您可以調用startActivity(myIntent),因爲包裝類實例的所有字段/方法都可用於內部類的實例。

+0

謝謝。我會試試這個。 :D我遵循的教程是一個非常基礎的教程,它涉及到從我的主類創建一個單獨的類。 :(我起初以爲我的代碼不工作的原因是我從一個非活動類調用活動PS:我很少閱讀android文檔,因爲它對新程序員不友好,但我會試試這個時候,我必須努力工作!!! Neh neh!neh! – 2011-01-24 21:24:24

2

假設你的活動的名稱是A,那麼你只是做:

A.this.startActivity(myIntent); 

問題的出現是因爲「這個」你的內部類中是指內部類的對象,當你想要的是封閉Activity的對象。答案是這個。

如果您沒有將該類封閉在Activity中,則可以嘗試使用傳遞給該方法的上下文來調用startActivity方法,例如, context.startActivty(myIntent)。 startActivity方法屬於Context類。

+0

真的嗎?謝謝!我現在就試試這個。 :D非常感謝你...... :) – 2011-01-24 20:44:11