2013-08-13 10 views
6

OnClickListenerの両方のインポートを使用できないのはなぜですか?私はすでにimport android.view.View.OnClickListener;を持っているが、私はimport android.content.DialogInterface.OnClickListener;を追加したいとき、それは私にエラーを与える:DialogInterfaceとView OnClickListeners

輸入android.content.DialogInterface.OnClickListenerこれは例えば理由、ある別のimport文

と衝突し、私はDialogInterfaceOnClickListener(すなわち

.setPositiveButton(R.string.ok, new android.content.DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 

       } 
      }) 

を実装する必要がある場合OnClickListenerの完全な名前空間を記述する必要があり、誰もが私にこれを説明することはできますか?これは愚かな質問である場合、私は謝罪します。

答えて

10

同じ名前の2つのクラスを同じファイルにインポートすることはできません。 Xという名前の2つのクラスをインポートし、Xを要求すると、コンパイラは参照しているクラスを認識しません。これらの状況には妥協点があります。あなたがその特定のインターフェイスを参照する必要があるときは、...

あなたはこのような何かを行うことができ、そして、...

import android.content.DialogInterface; 

をこのインポートこのインポートと...

import android.content.DialogInterface.OnClickListener; 

を置き換えることができます

.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { ... }) 

これは、DialogInterfaceがネストされた静的インターフェイスOnClickListenerを持つインターフェイスであるために機能します。これは目の上で少し良いはずであり、名前衝突の問題を解決します。

+0

ありがとうございます。乾杯 – Aksiom

0

私はいくつかのクラス(のようなAlertDialog)はOnClickメソッドは、2つのパラメータを取りますDialogInterface.OnClickListenerで動作するので、それはだと思うし想定していますView.OnClickListenerインタフェースからOnClick方法は一つだけを取るのに対し

Parameters:
dialog - The dialog that received the click.
paramAnonymousInt - The button that was clicked (e.g. DialogInterface.BUTTON1) or the position of the item clicked.

を:

Parameters:
v - The view that was clicked.

関連する問題