我有一个名为whereactivity的活动,它也有子对话框。现在,我想将这个活动显示为另一个活动的对话框。

我该怎么做呢?


当前回答

如果你的活动被渲染成一个对话框,只需在你的活动的xml中添加一个按钮,

<Button
    android:id="@+id/close_button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Dismiss" />

然后在Activity的Java代码中附加一个单击侦听器。在侦听器中,只需调用finish()

Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

这应该会终止对话框,返回到调用活动。

其他回答

如果你想删除活动标题并为对话框提供一个自定义视图,请将以下内容添加到你清单的活动块中

android:theme="@style/Base.Theme.AppCompat.Dialog"

用你想要的视图设计你的activity_layout

要以对话框的形式启动activity,我在AndroidManifest.xml中这样定义:

<activity android:theme="@android:style/Theme.Dialog" />

在activity标签中使用这个属性可以避免你的对话框出现在最近使用的应用列表中

android:excludeFromRecents="true"

如果你想阻止你的对话框/活动在用户点击对话框外时被破坏:

在setContentView()在你的活动使用:

this.setFinishOnTouchOutside(假);

现在,当我调用startActivity()时,它显示为一个对话框,当用户按下返回按钮时显示上一个活动。

注意,如果你正在使用ActionBarActivity(或AppCompat主题),你需要使用@style/ theme .AppCompat。对话框。

如果你的活动被渲染成一个对话框,只需在你的活动的xml中添加一个按钮,

<Button
    android:id="@+id/close_button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Dismiss" />

然后在Activity的Java代码中附加一个单击侦听器。在侦听器中,只需调用finish()

Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

这应该会终止对话框,返回到调用活动。

有时候你可以得到下面给出的异常

导致:java.lang.IllegalStateException:你需要使用一个主题。AppCompat主题(或后代)。

所以你可以用简单的方法来解决

在manifest中为appCompact添加活动主题。

android:theme="@style/Theme.AppCompat.Dialog"

它对某些人是有帮助的。

如果你需要Appcompat版本

style.xml

    <!-- Base application theme. -->
    <style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog">
        <!-- Customize your theme here. -->
        <item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
    </style>

yourmanifest.xml

    <activity
          android:name=".MyActivity"
          android:label="@string/title"
          android:theme="@style/AppDialogTheme">
    </activity>