如何删除Android上的Dialog(int dialogID)?
我用一个对话框扩展了我的类,在这个对话框中我设置了内容视图和其他按钮actionlisteners等等。。。当我创建对话框时,它会正确地显示背景 但是,一次又一次地打开它会给内容视图带来问题,内容被随意添加,大多数UI元素被重复,背景图像消失 我知道对话框只创建一次,并用作缓存,我不想知道Android Activity removeDialog(int dialogID)中有一个方法,但我不知道该由谁使用,我不给我的对话框提供任何id,我不知道如何给对话框提供id如何删除Android上的Dialog(int dialogID)?,android,background,dialog,Android,Background,Dialog,我用一个对话框扩展了我的类,在这个对话框中我设置了内容视图和其他按钮actionlisteners等等。。。当我创建对话框时,它会正确地显示背景 但是,一次又一次地打开它会给内容视图带来问题,内容被随意添加,大多数UI元素被重复,背景图像消失 我知道对话框只创建一次,并用作缓存,我不想知道Android Activity removeDialog(int dialogID)中有一个方法,但我不知道该由谁使用,我不给我的对话框提供任何id,我不知道如何给对话框提供id #dialog code
#dialog code
public class OptionsDailog extends Dialog implements OnClickListener {
public OptionsDailog(Activity pContext) {
super(pContext, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
mContext = pContext;
setContentView(R.layout.option_menu);
setBasicContents();
}
#options_menu.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" android:id="@+id/rl_root_option_menu">
<RelativeLayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:background="@drawable/bg_episode" android:id="@+id/rl_option_screen">
<LinearLayout android:id="@+id/ll_options" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true">
<Button android:text="Achievements" android:textSize="18sp" android:id="@+id/btn_achievements" android:background="@drawable/bg_options_menu" android:textColor="#FFFFFF" android:layout_width="250dp" android:layout_height="60dp"></Button>
<Button android:text="Tutorial" android:textSize="18sp" android:id="@+id/btn_tutorial" android:background="@drawable/bg_options_menu" android:textColor="#FFFFFF" android:layout_width="250dp" android:layout_height="60dp"></Button>
<Button android:text="Leaderboard" android:textSize="18sp" android:id="@+id/btn_leaderboard" android:background="@drawable/bg_options_menu" android:textColor="#FFFFFF" android:layout_width="250dp" android:layout_height="60dp"></Button>
<Button android:id="@+id/btn_music" android:text="Music" android:textSize="18sp" android:background="@drawable/bg_options_menu" android:textColor="#FFFFFF" android:layout_width="250dp" android:layout_height="60dp"></Button>
<Button android:id="@+id/btn_sound" android:textSize="18sp" android:text="Sound" android:layout_marginBottom="10dip" android:background="@drawable/bg_options_menu" android:textColor="#FFFFFF" android:layout_width="250dp" android:layout_height="60dp"></Button>
</LinearLayout>
</RelativeLayout>
<ImageButton android:background="@drawable/btn_back" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ib_back_options_menu"></ImageButton>
</RelativeLayout>
#Dialog showing code
final OptionsDailog mDailog = new OptionsDailog(JungleCrashLand.this);
mDailog.show();
对话框代码
公共类选项Dailog extends对话框实现OnClickListener{
公共选项Dailog(活动pContext){
超级(pContext,android.R.style.Theme_半透明_NoTitleBar_全屏);
mContext=pContext;
setContentView(R.layout.option_菜单);
setBasicContents();
}
#选项\u menu.xml
#显示代码的对话框
最终选项Dailog mDailog=新选项Dailog(JungleCrashLand.this);
mDailog.show();
对话框类使用自己的一组标识符。如果使用createDialog(int x)创建对话框,则可以将此x作为自己的标识符传递。删除对话框遵循相同的结构:removeDialog(int x),其中x再次是对话框类型的标识符。这样做是为了能够区分不同类型的对话框对话框的“类型”,由您自己定义,无需扩展dialog类 所以基本上:
static final int OPTIONS_DIALOG = 0;
[...]
createDialog(OPTIONS_DIALOG);
[...]
removeDialog(OPTIONS_DIALOG);
由于每个活动只能有一个对话框,因此这将仅删除此对话框及其所有(!)引用。请阅读以完全了解此处发生的情况。dialog类使用自己的标识符集工作。如果使用createDialog(int x)创建对话框您可以将此x作为自己的标识符传递。删除对话框遵循相同的结构:removeDialog(int x),其中x同样是对话框类型的标识符。这样做是为了能够区分由您自己定义的不同“类型”的对话框,而无需扩展dialog类 所以基本上:
static final int OPTIONS_DIALOG = 0;
[...]
createDialog(OPTIONS_DIALOG);
[...]
removeDialog(OPTIONS_DIALOG);
由于每个活动只能有一个对话框,因此这将仅删除此对话框及其所有(!)引用。请阅读以完全了解此处发生的情况。我已覆盖Disclose(),我还想删除此对话框覆盖后您是否执行了super.disclose()(只是一个想法)基本上只执行public void disclose(){super.disclose()…无论你想做什么}是的,我正在调用super,但在disclose上我也想删除这个对话框。我已经覆盖disclose(),我也想删除这个对话框。你是否做了super.disclose()在覆盖(只是一个想法)之后基本上只做public void disclose(){super.disclose()…无论你想做什么}是的,我正在呼叫super,但在解雇时,我也想删除此对话框。