如何判断android活动当前是否显示为对话框?

如何判断android活动当前是否显示为对话框?,android,android-activity,Android,Android Activity,我在库项目中有一个活动,它可能显示为对话框,也可能不显示为对话框。如果是,我想设置它的高度和宽度。有没有办法在onCreate中确定当前主题是一个对话框?您可以使用反射——只需从onCreate()调用此方法 我最终决定有两个活动,一个叫做WizardActivity,另一个叫做WizardDialog。我已经在库中找到了如何在清单中设置这些主题的示例,由使用我的库的开发人员来确保主题是正确的。不幸的是,该活动在库项目中,因此我无法控制主题是什么。恐怕我只需要两个静态方法来启动活动:一个作为活动

我在库项目中有一个活动,它可能显示为对话框,也可能不显示为对话框。如果是,我想设置它的高度和宽度。有没有办法在onCreate中确定当前主题是一个对话框?

您可以使用反射——只需从onCreate()调用此方法


我最终决定有两个活动,一个叫做WizardActivity,另一个叫做WizardDialog。我已经在库中找到了如何在清单中设置这些主题的示例,由使用我的库的开发人员来确保主题是正确的。

不幸的是,该活动在库项目中,因此我无法控制主题是什么。恐怕我只需要两个静态方法来启动活动:一个作为活动启动,另一个作为对话框启动。然后,我只需要信任使用我的库的开发人员,让他们将适当的主题与启动活动的方式相匹配。
public boolean isDialog() {
    boolean isDialog;
    try {
        Method method = ContextThemeWrapper.class.getMethod("getThemeResId");
        method.setAccessible(true);
        int themeResId = (Integer) method.invoke(this);
        // TODO: replace Theme_Dialog with the Theme you're using
        isDialog = themeResId == android.R.style.Theme_Dialog; 
    } catch (Exception e) {
        // Error getting theme resource ID
        isDialog = false;
    }       
    return isDialog;
}