2013-05-16 108 views
10

Android 2.3.3找不到與指定名稱相匹配的資源Theme.Sherlock.Dialog

我已經搜索到了一個解決方案,但我無法理解給出的解決方案。如果有人能夠簡單地解釋如何擺脫這個錯誤,我會很感激。

我在我的應用程序中使用了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').。我爲什麼得到這個?我應該怎麼做,去除這個?

回答

29

JakeWharton在4個月前刪除了ActionBarSherlock中的對話框主題。

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

只需使用@android:style/Theme.Dialog和擴展Activity,而不是SherlockActivity。 ActionBarSherlock不會爲對話做任何事情,如果您的主題不使用,它只會抱怨。

+0

哦.. Okie ..會看到 –

+2

這是一個遺憾。我們的基類在我們的應用程序中提供了很多功能,它們從RoboSherlockFragmentActivity繼承。我想很多應用程序都是這樣組織的。這將導致基類的代碼重複數據刪除,這是一個相當可怕的模式。 – Snicolas

+0

@Snicolas,你絕對是對的 – Sviatoslav

0

ABS沒有Theme.Sherlock.Dialog的樣式。

您可能希望這樣的活動延長口味Dialog之一,例如:

public class MyDialog extends Dialog { 
     // Lots of code 
    } 
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; 
    } 
} 
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> 
+0

你能發佈的不僅僅是你的代碼嗎?也許是對它做什麼的描述(無論是在評論還是分開)? – bjb568

相關問題