4

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

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();
} 
4

2 回答 2

14

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

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

于 2012-09-14T14:30:10.663 回答
0

尝试

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

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

于 2012-09-14T14:26:03.613 回答