1

私はAndroidプロジェクトで友人とリモートで共同作業を行っており、友人の変更をローカルリポジトリにプルすると、AlertDialogオブジェクトで行われた呼び出しに対して次のエラーメッセージが表示されます。

DialogInterface.OnShowListener() cannot be resolved to a type

完全なコードは次のとおりです。

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.TextView;
...
...
protected AlertDialog mDialogForgotPassword;
...
...
mDialogForgotPassword = new AlertDialog.Builder(LogInActivity.this)
.setTitle(getString(R.string.forgot_password))
.setView(input)
.setCancelable(false)
.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        // NOTE: LEAVE THIS AS EMPTY
        // WE OVERRIDEN THIS METHOD USING THE setOnShowListener
    }

})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        dialog.cancel();
    }
})
.create(); // created AlertDialog

// ERROR APPEARS NEXT, red line under "new DialogInterface.OnShowListener()"
mDialogForgotPassword.setOnShowListener(new DialogInterface.OnShowListener() {
    @Override
    public void onShow(DialogInterface dialog) {
        final Button positiveButton = mDialogForgotPassword.getButton(AlertDialog.BUTTON_POSITIVE);
        positiveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String EMAIL = input.getText().toString();
                if( ValidationHelper.isEmail(EMAIL) ){
                    resetUserPassword(EMAIL);
                }
            }
        });
    }
}); // end setOnShowListener
mDialogForgotPassword.show();

友人は、入力後にEclipseでCtrl+を押すと、メソッドが提案として表示されると言います。しかし、私にはそうではありませんが、インポートステートメントは完全であるように見えます。ヘルプ?SpacemDialogForgotPasswordsetOnShowListener()

4

2 に答える 2

1

Eclipseを使用している場合は、を押してみてください

CTRL + SHIFT + O

(「ゼロ」ではなく、「O」の文字)問題の原因となっているファイル内にあります。これにより、すべてのインポートの問題が解決するはずです。

これで問題が解決しない場合は、自分と友達が同じAPIレベルを使用するようにプロジェクトを構成していることを確認する必要があります。DialogInterface.OnShowListener()はAPILEVEL8以降で使用できるため、プロジェクトが少なくともそのAPIレベルを使用するように構成されていることを確認してください。

于 2012-07-28T08:50:17.480 に答える
0

エラーを排除するために私がしたこと:

  1. EclipseのJavaコンパイラが1.6に設定されていることを確認しました。プロジェクトを右クリック->Javaコンパイラ->[プロジェクト固有の設定を有効にする]をオンにする->[コンパイラコンプライアンスレベル]を1.6に設定する->[デフォルトのコンパイラコンプライアンス設定を使用する]をオンにする

  2. プロジェクトを右クリック->Android->プロジェクトビルドターゲットの「Android4.1」をチェックしました。この記事の執筆時点では、JellyBeanが最新のリリースです。

  3. Androidマニフェストで、最小SDKを8(Froyo、2.2)に上げ、targetSdkを16、JellyBeanに設定しました。APIレベル4はとにかく最低には低すぎ、Androidの配布データによると、市場シェアは非常に小さく、縮小しています。

于 2012-07-31T05:03:31.483 に答える