获取外部类AlertDialog中的单击结果

时间:2015-11-10 14:37:10

标签: java android alertdialog

大家好日子!我会试着描述我的问题。这是建筑范围内的东西......我相信。那么,让我们开始吧。 我有一个活动,用户可以创建新玩家或点击list并获取已创建的玩家列表。所以在activity.java中我创建DatabaseHelperSQLiteDatabase并将其用于INSERT(如果是新玩家)或SELECT(如果玩家选择现有玩家)。要填写列表,请使用ListViewAdapter。 当用户点击(简称)列表中的玩家姓名时,他会得到AlertDialog,问题是“你想继续播放玩家XXX吗?”如果不是,我只是取消,如果是,我取名字,创建intent并开始另一个activity,其中玩家名称已转移intent.putExtra("name", LoginDialog.selectedName))到另一个activity。那太好了。但现在我想让用户删除播放器。这个想法是 - 经过长时间的点击,用户得到AlertDialog问题“你真的想删除玩家XXX吗?”不 - 很明显 - 取消。但是如何应对YES?

粗略地说 - 在“是”之后,我必须连接到DB并执行DELETE查询。我是怎么试的:

public class DeleteDialog {
AlertDialog.Builder ad;
public static Context context;
public static String selectedName;
public DatabaseHelper mDatabaseHelper;
public SQLiteDatabase mSqLiteDatabase;

public void dialogOfSelectedName(Context context, String selectedName) {

    context = this.context;
    selectedName = this.selectedName;
    ad = new AlertDialog.Builder(context);
    ad.setTitle("Удаление игрока");
    ad.setMessage("Удалить игрока " + selectedName + "?");
    ad.setCancelable(true);
    mDatabaseHelper = new DatabaseHelper(context, "mydatabase.db", null, 1);
    mDatabaseHelper.getReadableDatabase();
    mSqLiteDatabase = mDatabaseHelper.getWritableDatabase();
    ad.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            mSqLiteDatabase.execSQL("DELETE FROM" + DatabaseHelper.DATABASE_TABLE + " WHERE " + DatabaseHelper.NAME_COLUMN + " LIKE '" + selectedName + "'");
        }

    });

    ad.setPositiveButton("NO", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });

    AlertDialog alert = ad.create();
    alert.show();

    }
}

问题是selectedName无法从重写方法onClick中看到,但我在查询中需要它。怎么实现呢?或者我的做法完全错了?请帮忙提出建议。 谢谢!

1 个答案:

答案 0 :(得分:1)

将变量设为final。您可以使用onClick方法访问它。

更改

public void dialogOfSelectedName(Context context, String selectedName)

public void dialogOfSelectedName(Context context, final String selectedName)