Не найден ресурс, который соответствует указанному имени Theme.Sherlock.Dialog

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').. Почему я получаю это? Что мне делать, чтобы удалить это?

Ответ 1

Диалоговые темы в ActionBarSherlock были удалены JakeWharton более четырех месяцев назад.

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

Просто используйте @android:style/Theme.Dialog и расширьте Activity вместо SherlockActivity. ActionBarSherlock ничего не делает для диалогов, и он просто будет жаловаться, если вы не используете его, если его темы.

Ответ 2

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;
    }
}

Ответ 3

--- 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>

Ответ 4

В АБС нет стиля Theme.Sherlock.Dialog.

Вы можете захотеть, чтобы эта активность расширила один из вариантов Dialog, например:

    public class MyDialog extends Dialog {
        // Lots of code
    }