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 LEVEL。DialogInterface.OnShowListener()自 API LEVEL 8 起可用,因此请确保您的项目配置为至少使用该 API 级别。

于 2012-07-28T08:50:17.480 回答
0

我为消除错误所做的工作:

  1. 确保我在 Eclipse 中的 Java 编译器设置为 1.6。右键单击项目 --> Java 编译器 --> 选中“启用项目特定设置” --> 将“编译器合规性级别”设置为 1.6 --> 选中“使用默认编译器合规性设置”。

  2. 右键单击项目 --> Android --> 选中项目构建目标的“Android 4.1”。在撰写本文时,Jelly Bean 是最新版本。

  3. 在我的 Android 清单中,我将最小 SDK 提高到 8(Froyo,2.2)并将 targetSdk 设置为 16,Jelly Bean。无论如何,API 级别 4 太低了,而且根据Android 分发数据,它的市场份额非常小而且正在缩小。

于 2012-07-31T05:03:31.483 回答