Android ActionBarSherlock对话框不透明且不暗

Android ActionBarSherlock对话框不透明且不暗,android,dialog,transparent,actionbarsherlock,android-theme,Android,Dialog,Transparent,Actionbarsherlock,Android Theme,我正在使用并希望在我的应用程序中添加一个对话框,如项目提供的中所示。对话框示例如下所示: 我自己创建了一个活动。以下是相关的源代码: public class Dialog extends SherlockActivity { @Override public void onCreate(Bundle savedInstanceState) { setTheme(R.style.Sherlock___Theme_DarkActionBar); s

我正在使用并希望在我的应用程序中添加一个对话框,如项目提供的中所示。对话框示例如下所示:

我自己创建了一个活动。以下是相关的源代码:

public class Dialog extends SherlockActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.Sherlock___Theme_DarkActionBar);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
    }
}
出于某种原因,Android强迫我添加
setTheme()
,尽管ABS示例没有这样做。如果我省略它,我将遇到以下错误

java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative.
My
AndroidManifest.xml
具有以下设置,这些设置与ABS示例中的设置非常相似

<activity
    android:name=".activities.Dialog"
    android:label="@string/title_activity_dialog"
    android:theme="@style/Theme.Sherlock.Dialog" >
</activity>

同时,我看到它被弃用了。相反,我可以用一个。这里出现的问题是:如何将片段与操作菜单项集成


替代解决方案:

我决定使用
对话框片段
而不是
活动
,因为我估计它更“安全”。我基本上遵循了非常翔实的教程,我喜欢推荐它作为任何感兴趣的读者的完美起点。此外,我想添加相关和有用的帖子:


尝试为应用程序设置主题

<application
    android:theme="@style/Theme.Sherlock"

您看到的输出肯定来自在Java代码中设置主题(这将覆盖XML中设置的值)。我刚刚启动了下面的示例应用程序(这就是全部内容),并通过添加额外的
setTheme()
调用复制了这个问题

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Dialog"
        android:theme="@style/Theme.Sherlock.Dialog">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
至于为什么没有那个额外的方法就得到了一个异常,那是另一回事(而且很奇怪)。正如您所看到的,它应该使用我上面提供的代码

也许要确保库项目和您的项目都至少使用安卓4.0(API 14)进行编译,因为这是库的要求


除此之外,如果您只想在应用程序中显示一个对话框,它是否需要是一个主题活动?这并不常见。您始终可以创建一个简单的
对话框
警报对话框
子类来显示。有关详细信息…

您建议的配置允许对话框显示黑色背景色和白色输入字段。此外,仍然可以看到一个actionbar。但是,该对话框是不透明的。能否演示如何启动此活动?这可能是因为您违反了这里的一个警告(请参见注释:):我检查了ActionBarSherlock库项目和我自己的:都是目标API级别16。我没有从你的回答中读到的是:你是否成功构建了一个透明的模态对话框?我测试了你的代码,结果与我的第二个截图相同不过,我将再次签出
对话框
文档。是的,在2.3.3和4.0设备上,输出与示例应用程序的输出完全匹配(您的第一个屏幕截图)。我应该补充一点,当
设置主题(R.style.Sherlock_uuuuuuuuu主题_DarkActionBar)时,它看起来像您的第二个屏幕截图已重新添加到中。
<application
    android:theme="@style/Theme.Sherlock"
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Dialog"
        android:theme="@style/Theme.Sherlock.Dialog">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
public class Dialog extends SherlockActivity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView text = new TextView(this);
        text.setText("This is a dialog!");

        setContentView(text);
    }
}