我使用以下代码:
public class Settings extends Activity implements OnClickListener {
private Activity activity;
private AlertDialog.Builder builder;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.settings);
Button bAdd = (Button) findViewById(R.id.bAdd);
bAdd.setOnClickListener(this);
activity = this;
builder = new AlertDialog.Builder(activity);
builder.setMessage("message")
.setTitle("title");
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bAdd:
AlertDialog dialog = builder.create();
break;
}
}
}
但由于某种原因,我的弹出窗口没有出现并且什么也没做。有什么想法导致这种故障?谢谢!
答案 0 :(得分:7)
您必须使用show()
方法而不是create()
。
注意: create()
方法只会创建Dialog
的实例,但不会显示它。
一个建议:
您可以像这样创建返回Dialog
的方法:
public Dialog createNewDialog(int type) {
AlertDialog dlg = null;
switch (type) {
case SOME_CONSTANT:
dlg = new AlertDialog.Builder(ActivityName.this / this)
.setTitle("Title")
.setMessage("Message")
.setPositiveButton("Yes", null)
.create();
break;
}
}
然后你可以把它称为:
createNewDialog(SOME_CONSTANT).show();
将显示您的Dialog
。
特别是在您的情况下,您可以使用以下代码段来实现目标:
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bAdd:
createNewDialog(SOME_CONSTANT).show();
break;
}
}
希望它有所帮助。
答案 1 :(得分:1)
我有这个问题,也许这个答案可以帮助某人。
我正在运行代码以在非UI线程上显示AlertDialog。使用后:
runOnUiThread(new Runnable()
{
@Override
public void run()
{
ShowAlert();
}
});
AlertDialog起作用。
答案 2 :(得分:0)
你需要调用'builder.show()`。
答案 3 :(得分:0)
我有一个类似的问题,在我的情况下,对话框会出现并在几毫秒内消失:要解决它,不要在调用对话框的同一方法中调用finish()或finishActivity()。
createNewDialog(SOME_CONSTANT).show();
finish();
即使在您访问它之前,它也会破坏您的对话框。
答案 4 :(得分:-1)
未展示的原因是.show()
未调用AlertDialog
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bAdd:
AlertDialog dialog = builder.create();
dialog.show();
break;
}
}