Android - 为什么Dialog不会关闭dialog.dismiss()

时间:2012-09-14 13:51:49

标签: android android-layout

我有点奇怪的问题。活动开始时,我会显示一个对话框,说明某些项目的加载方式如下:

Dialog dialog;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);        
    setContentView(R.layout.topic_edit);

    dialog = new Dialog (this);

    dialog.setContentView(R.layout.please_wait);
    dialog.setTitle("Loading The Comment.");

    TextView text = (TextView) dialog.findViewById(R.id.please_wait_text);
    text.setText("Please wait while the comment loads...");
    dialog.show();

我在类声明之前声明了Dialog对话框,然后每当我尝试用dialog.dismiss();解除它时它都不会关闭。

这是please_wait.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

<TextView
    android:id="@+id/please_wait_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
</RelativeLayout>

有人知道为什么对话框没有关闭dialog.dismiss() ...我在调用返回后尝试在异步调用中关闭。但是我确实检查了,dialog.dismiss()行被执行了,只是出于某种原因没有关闭对话框。

这就是我尝试关闭对话框的方法:

@Override
protected void onPostExecute(String result) 
{
    dialog.dismiss();
} 

2 个答案:

答案 0 :(得分:14)

确保在执行dialog.dismiss时它指向您创建的对话框。您将对话框作为类变量,并且很有可能在解雇时分配另一个对话框。我有这个,结果发现在解雇时对话变量不再指向我的实际对话框。

设置断点并查看创建/执行时的对话变量是否仍然相同可能会有所帮助

答案 1 :(得分:0)

尝试

Context mContext = getApplicationContext();
Dialog dialog = new Dialog(mContext);

根据文档,它应该是声明Dialog的正确方法。