2

私は、以下で説明するカスタムダイアログを持っています。なぜ私はダイアログビューのボタンのonClickListenerを設定できないのですか?

マイカスタムダイアログのレイアウト(* my_dialog.xml *)のみ "却下" ボタン含まれています

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 

     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 

    > 

     <Button 
      android:id="@+id/dismiss_btn" 
      android:layout_width="100dip" 
      android:layout_height="30dip" 
      android:layout_centerHorizontal="true" 
      android:text="Dismiss me" 
      android:textSize="8dip" 
      android:textColor="#ffffff" 
      /> 
    </RelativeLayout> 

私のダイアログビュークラス:上に示したコードとして

public class MyDialog extends Dialog{ 

     public MyDialog(Context context){ 
      super(context); 
     } 


     @Override 
     protected void onCreate(Bundle savedInstanceState){ 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.my_dialog); 

       Button dismissMeBtn = (Button)findViewById(R.id.dismiss_btn); 

       /** ERROR Message when set onClickListener below (throw by eclipse editor)**/ 

       //  The method setOnClickListener(View.OnClickListener) in the 
       // type View is not applicable for the arguments (new DialogInterface.OnClickListener(){}) 

       dismissMeBtn.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         MyDialog.this.dismiss(); 
        } 
        }); 

      getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     } 


    } 

私はダイアログボックスに "* dismiss_btn *"ボタンを持っています。私は、閉じボタンが押されたときにダイアログを閉じたいですが、コードにエラーがあります。setOnClickListener(コードに示されている)。

エラーメッセージ(日食エディタによるエラー投):

メソッドsetOnClickListener(View.OnClickListener)View型引数には適用されませんで(新しいDialogInterface.OnClickListener(){})

なぜ私はエラーが発生しましたか?なぜ私は、ダイアログビューのボタンのonClickListenerを設定できないのですか? Eclipseなど

答えて

27

は、それがDialogInterface onClickListenerであると考えますが、それはあなたがDialogInterfaceのコンテキストであり、それは自分自身でOnClickListenerのインタフェースを持っているためである

   dismissMeBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        MyDialog.this.dismiss(); 
       } 
       }); 
+0

ありがとうございました! – Leem

+0

Thanx、それは働いた。 –

+0

このアプローチを使用して、「フラグメントページャ」の例を実装する必要があります。http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html誰かを助けることを願っています! – 1owk3y

1

になりますので、あなたはビューonClickListenerを必要としています。

あなたのコードは次のようになります。

dismissMeBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     MyDialog.this.dismiss(); 
    } 
}); 
0

あなたの輸入に問題があるようです。新しいOnClickListenerを作成しようとすると 、あなたは(おそらくへ)ボタンのために必要OnClickListenerされていない、

をDialogInterface.OnClickListenerのコンストラクタを呼び出しているnew View.OnclickListener(){ ... }を使用するか、import android.view.View.OnClickListenerにより輸入を交換してくださいそれは絶対必要です。

関連する問題