什么使对话框可显示?

时间:2012-03-18 16:58:38

标签: android android-layout android-dialog

我有一个非常简单的对话框,定义为:

import android.app.AlertDialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;

public class MyDialog{

  private String promptReply = null; // local variable to return the prompt reply value

  public String showAlert(String ignored, Context ctx)
  {
    LayoutInflater li = LayoutInflater.from(ctx);
    View view = li.inflate(R.layout.promptdialog, null);

    AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
    builder.setTitle("Dialog Title");
    builder.setView(view);

    builder.setPositiveButton("OK", (myActivity)ctx);
    builder.setNegativeButton("Cancel", (myActivity)ctx);

    AlertDialog ad = builder.create();

    ad.show();
    return "dummystring";    
  }
}

当我在为活动的主要布局调用onCreate()后尝试在setContentView() 中显示它时,对话框根本没有显示:

MyDialog dialog = new MyDialog();
dialog.showAlert("Why isn't this shown???", this);

另一方面,如果我在调用setContentView()之前为活动的主要布局放置相同的完全调用,则对话框显示正常。

我的问题是为什么?

为什么订单在这种情况下至关重要?

我错过了什么?

1 个答案:

答案 0 :(得分:2)

在用于扩充视图的代码中,使用以下内容:

View layout = inflater.inflate(R.layout.promptdialog,
                           (ViewGroup) findViewById(R.id.layout_root));

其中layout_root是自定义对话框顶级布局的ID。