0

だから私は3行を表示するポップアップウィンドウを構築しようとしています:-時間-インシデントタイプ-場所

次に、[OK](ポップアップを閉じる)と[地図に送信](これはGoogleマップに明示的なインテントを送信し、場所を送信します。このコードはまだ記述していません)の2つのボタンがあります。

奇妙な理由で、Eclipseで「AlertDialog.Builderを型に解決できません」というエラーが表示されます。正しくインポートし、何度もクリーニングしたと思います。どうすればいいのかわからない。ご協力いただきありがとうございます。

import android.R;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;

public class AlertDialog 
{
public Dialog onCreateDialog(Bundle savedInstanceState) 
{
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Time: " + SMSReceiver.getTime() + "\nIncident: " + 
    SMSReceiver.getCallType() + "\nLocation: " + SMSReceiver.getAddress())
    .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {


        }
    })
    .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {


        }
    });

    return builder.create();

    }
}
4

2 に答える 2

3

実際にはエラーではありません。誤ってAlertDialogを使用してクラス名を作成しましたが、これは実際にはAndroidパッケージにすでに存在しています。AlertDialogを使用してクラスを作成し、そのBuilderメソッドにアクセスしようとすると、カスタムクラスにそのメソッドがないため、エラーが発生します。

質問の簡単な解決策は、AlertDialogクラスの名前を他のクラス名に変更するだけで、問題は解決します。

注:コードに他のエラーはありません。

クラス名を他の名前、たとえばMyAlertDialogに変更することをお勧めします。そうすると、クラスコードは次のようになります(Javaファイルの命名規則に従って、パブリッククラスに従ってファイル名を変更する必要もあります。

public class MyAlertDialog // See change is here
{
    public Dialog onCreateDialog(Bundle savedInstanceState) 
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Time: " + SMSReceiver.getTime() + "\nIncident: " + 
                SMSReceiver.getCallType() + "\nLocation: " + SMSReceiver.getAddress())
                .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {


                    }
                })
                .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {


                    }
                });

        return builder.create();

    }
}
于 2012-10-26T02:15:01.440 に答える
3

クラス名がAlertDialogだからです。onCreateDialog()関数で、

AlertDialog.Builder builder = new AlertDialog.Builder(this);

この行では、「AlterDialog」は実際には自己定義のAlterDialogクラスへの参照です。これに変更すれば、うまくいくはずです。

android.app.AlertDialog.Builder builter = new android.app.AlertDialog.Builder(this);
于 2012-10-26T02:20:20.157 に答える