Android 2.3.3
我搜索过SO以寻求解决方案,但我无法理解给出的解决方案。如果有人能够以简单的方式解释如何摆脱这个错误,我会很感激。
我在我的应用程序中使用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').
。我为什么要这个?我该怎么办,删除它?
答案 0 :(得分:29)
https://github.com/JakeWharton/ActionBarSherlock/commit/601bde214b56b8fad0b4fc5aaed5af0b531b6135
只需使用@android:style/Theme.Dialog
并扩展Activity
而不是SherlockActivity
。 ActionBarSherlock对于对话框没有任何作用,如果你的主题没有使用它,它就会抱怨。
答案 1 :(得分:1)
不再支持Theme.Sherlock.Dialog。我使用以下方法在DialogFragment中设置对话框的样式。您可以查看我的dialog templates。
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;
}
}
答案 2 :(得分: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>
答案 3 :(得分:0)
ABS中没有样式Theme.Sherlock.Dialog
。
您可能希望该活动扩展其中一种风格Dialog
,例如:
public class MyDialog extends Dialog {
// Lots of code
}