10

安卓 2.3.3

我已经搜索了一个解决方案,但我无法理解给出的解决方案。如果有人能以简单的方式解释如何摆脱这个错误,我将不胜感激。

我在我的应用程序中使用 ActionBarSherlock。我的基本主题,Theme.Sherlock.Light适用于所有活动。对于一项活动,我希望我的活动看起来像一个对话框,因此我想使用Theme.Sherlock.Dialog.

这是我的清单文件的声明。

<activity
    android:name="com.xxx.xx.x.Activity"
     android:theme="@style/Theme.Sherlock.Dialog" >
</activity>

但我的 XML 中出现以下错误error: Error: No resource found that matches the given name (at 'theme' with value '@style/Theme.Sherlock.Dialog').:为什么我会得到这个?我应该怎么做才能删除它?

4

4 回答 4

29

四个多月前,JakeWharton 删除了 ActionBarSherlock 中的对话框主题。

https://github.com/JakeWharton/ActionBarSherlock/commit/601bde214b56b8fad0b4fc5aaed5af0b531b6135

只需使用@android:style/Theme.Dialog和扩展Activity而不是SherlockActivity. ActionBarSherlock 不会为对话框做任何事情,如果您不使用它的主题,它只会抱怨。

于 2013-05-16T11:21:30.107 回答
1
--- res/values-v14/abs__themes.xml
+++ res/values-v14/abs__themes.xml
@@ -26,9 +26,4 @@
       <item name="android:windowActionBar">false</item>
       <item name="android:windowNoTitle">true</item>
     </style>
+
+    <style name="Theme.Sherlock.Dialog" parent="android:Theme.Holo.Dialog">
+    </style>
+    <style name="Theme.Sherlock.Light.Dialog" parent="android:Theme.Holo.Light.Dialog">
+    </style>
 </resources>
于 2014-01-08T01:05:48.623 回答
1

不再支持 Theme.Sherlock.Dialog。我使用以下方法在 DialogFragment 中设置我的对话框样式。您可以查看我的对话框模板

public Dialog onCreateDialog(Bundle savedInstanceState)
{
    ContextThemeWrapper context = new ContextThemeWrapper(getActivity(), getTheme(true));
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    ...
    return builder.create();
}

private int getTheme(boolean light)
{
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    {
        return light ? android.R.style.Theme_DeviceDefault_Light_Dialog : android.R.style.Theme_DeviceDefault_Dialog;
    }
    else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
    {
        return light ? android.R.style.Theme_Holo_Light_Dialog : android.R.style.Theme_Holo_Dialog;
    }
    else
    {
        return android.R.style.Theme_Dialog;
    }
}
于 2013-08-08T21:34:51.940 回答
0

ABS 中没有样式作为Theme.Sherlock.Dialog.

您可能希望该活动扩展其中一种风味Dialog,例如:

    public class MyDialog extends Dialog {
        // Lots of code
    }
于 2013-05-16T11:22:13.123 回答