我有点奇怪的问题。活动开始时,我会显示一个对话框,说明某些项目的加载方式如下:
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();
}
答案 0 :(得分:14)
确保在执行dialog.dismiss时它指向您创建的对话框。您将对话框作为类变量,并且很有可能在解雇时分配另一个对话框。我有这个,结果发现在解雇时对话变量不再指向我的实际对话框。
设置断点并查看创建/执行时的对话变量是否仍然相同可能会有所帮助
答案 1 :(得分:0)
尝试
Context mContext = getApplicationContext();
Dialog dialog = new Dialog(mContext);
根据文档,它应该是声明Dialog的正确方法。