如何删除Android(int dialogID)Android?

时间:2012-01-19 08:06:05

标签: android background dialog

我已经通过一个对话框扩展了我的课程,我在其中设置了内容视图和其他按钮动作等等...正在发生的事情是,当我创建对话框时,它会正确显示背景。

但是一次又一次地打开它会导致内容视图出现问题,随意添加内容并且大多数UI元素都在重复,背景图像也会消失。

我知道对话框创建一次并用作缓存,我不希望我知道Android Activity中有一个方法removeDialog(int dialogID)但我不知道该使用谁,我不知道不给我的对话框任何id我不知道如何给对话框id。

#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();

1 个答案:

答案 0 :(得分:4)

Dialog类使用自己的一组标识符。如果使用createDialog(int x)创建对话框,则可以将此x作为自己的标识符传递。删除对话框遵循相同的结构:removeDialog(int x)其中x再次是对话框类型的标识符。这样做是为了能够区分由您自己定义的不同“类型”对话框,而无需扩展对话框类。

基本上是这样的:

static final int OPTIONS_DIALOG = 0;
[...]
createDialog(OPTIONS_DIALOG);
[...]
removeDialog(OPTIONS_DIALOG);

因为每个活动只能有一个对话框,所以这将只删除此对话框以及每个(!)对它的引用。阅读http://developer.android.com/guide/topics/ui/dialogs.html以完全了解此处发生的情况。