我有一个非常简单的对话框,定义为:
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()
之前为活动的主要布局放置相同的完全调用,则对话框显示正常。
我的问题是为什么?
为什么订单在这种情况下至关重要?
我错过了什么?
答案 0 :(得分:2)
在用于扩充视图的代码中,使用以下内容:
View layout = inflater.inflate(R.layout.promptdialog,
(ViewGroup) findViewById(R.id.layout_root));
其中layout_root
是自定义对话框顶级布局的ID。