6

の両方のインポートができないのはなぜですかOnClickListener。私はすでに持っていますimport android.view.View.OnClickListener;が、追加したいときにimport android.content.DialogInterface.OnClickListener;エラーが発生します:

インポート android.content.DialogInterface.OnClickListener が別のインポート ステートメントと衝突する

これが、たとえばOnClickListenerDialogInterface OnClickListener(

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

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

                }
            })

誰でもこれを説明できますか?これがばかげた質問である場合は、申し訳ありません。

4

2 に答える 2

10

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

import android.content.DialogInterface.OnClickListener;

このインポートで...

import android.content.DialogInterface;

次に、その特定のインターフェイスを参照する必要がある場合は、次のようなことができます...

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

これDialogInterfaceが機能するのは、 が という名前のネストされた静的インターフェースを持つインターフェースだからですOnClickListener。これにより、見た目が少し良くなり、名前の衝突の問題が解決されます。

于 2013-08-13T20:25:19.207 に答える