【问题标题】:How to call AlertDialog inside AlertDialog?如何在 AlertDialog 中调用 AlertDialog?
【发布时间】:2013-04-11 14:11:44
【问题描述】:

我有这个代码:

public class Example
{
 String sp,st;
 SQLiteDatabase database, database2;
 void func()
 {
 new AlertDialog.Builder(view.getContext())
    .setIcon(android.R.drawable.ic_dialog_alert)
    .setTitle("Confirm")
    .setMessage("Are you sure?")
    .setPositiveButton("Yes", new DialogInterface.OnClickListener()
    {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      String st = editTextSt.getText().toString();
      String sp = editTextSp.getText().toString();
      database2 = new SQLiteDbHelper(this);
      database = database2.getWritableDatabase();
      ContentValues values = new ContentValues();
      values.put(SQLiteDbHelper.COLUMN_NAME_SP, sp);
      values.put(SQLiteDbHelper.COLUMN_NAME_ST, st);
      long insertId = database.insert(SQLiteDbHelper.TABLE_NAME, null, values);
      //I would like to call it here
    }})
    .setNegativeButton("No", null)
    .show();

 }

我想在上面的 AlertDialog 中调用这个 AlertDialog:

new AlertDialog.Builder(this)
                .setMessage("Saved!")
                .setNeutralButton("OK", null)
                .show();

我该怎么做?

如果我只是把它放在我想放的地方,我会收到“构造函数 AlertDialog.Builder(new DialogInterface.OnClickListener(){}) 未定义”的错误。

【问题讨论】:

    标签: android android-alertdialog


    【解决方案1】:

    试试这个

    new AlertDialog.Builder(Example.this)
                    .setMessage("Saved!")
                    .setNeutralButton("OK", null)
                    .show();
    

    假设类 ExampleActivity,这将起作用。

    public class Example extends Activity
    

    否则,使用这个

    new AlertDialog.Builder(view.getContext())
                    .setMessage("Saved!")
                    .setNeutralButton("OK", null)
                    .show();
    

    【讨论】:

    • 谢谢!完美运行!我想这是我第一次没有尝试这样做。讨厌成为菜鸟。
    【解决方案2】:

    一旦您进入 ClickListener 对象,this 将引用该对象,而不是像在外部那样的活动,假设 Example 是一个可能不基于您的代码的活动。

    要修复它,您只需要使用不同的方法来获取上下文以传递给您的构建器构造函数。

    要创建您使用的第一个构建器,您可以这样做:

    new AlertDialog.Builder(view.getContext())
    

    使用view.getContext() 获取您需要的上下文。您应该可以使用第二个构建器以相同的方式进行操作。

    【讨论】:

    • no, "不能引用以不同方法定义的内部类中的非最终变量视图"
    • @JohnnyAlmi 你从哪里得到view?试着让它成为最终的。此外,我强烈建议您在深入了解 Android 之前复习一下您的 Java 编程。这是一个常见问题,如果您更多地练习纯 Java,您就会知道如何解决。在没有良好 Java 基础的情况下尝试在 Android 上工作只会令人沮丧。
    • 另一个答案是有效的。感谢您的时间!我有很好的 C/C++/C# 和基本的 Java 知识,但有时会卡住。我一定会提高我的 Java 知识!
    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多