2011-01-24 23 views
1

これは単なる質問に過ぎないと思います(私はそういうわけではありません...) このダイアログボックスには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?これを正しく行う方法について私に指示してください。 ご協力いただければ幸いです。

A.this.startActivity(myIntent); 

何をしたいことはあるとき、「これは」あなたの内部クラスの内部で、その内部クラスのオブジェクトを参照するため、問題が発生:

答えて

1

Dialogからサブクラス化することで過度に複雑になると確信しています。ダイアログチュートリアルに従ってみてください。https://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog

ダイアログは、独自のカスタムダイアログクラスを用意することなく、即座に作成されます(Activity.onCreateDialog())。リスナーをラッピングアクティビティの内部に設定するので(チュートリアルに従う場合)、ラップクラスインスタンスのすべてのフィールド/メソッドが内部クラスのインスタンスで使用できるため、startActivity(myIntent)を呼び出すことができます。

+0

ありがとうございました。私はこれを試してみる。 :D私が従ったチュートリアルはかなり基本的なものでした。私のメインクラスとは別のクラスを作成することに関わっていました。私のコードがうまくいかなかった理由は、私が非アクティビティクラスからアクティビティを呼び出すためだと思っていました。PS:新しいプログラマにとってそれほどフレンドリーではないので、アンドロイドのドキュメントを読むことはめったにありません。この時間を試して、私は物事を動作させる必要があります!ねえね! –

2

は、あなたの活動の名前は、その後、あなただけやるされると仮定します囲みアクティビティーのオブジェクト。 A.これはそれを参照します。

アクティビティでこのクラスを囲まない場合は、メソッドに渡したコンテキストを使用してstartActivity fromメソッドを呼び出してみてください。 context.startActivty(myIntent) startActivityメソッドはContextクラスに属します。

+0

本当に?ありがとう!私は今これを試してみるでしょう。 :Dありがとうございました。:) –