2014-01-22 27 views
2

所以我使用我的一個Android應用程序出現了一些奇怪的行爲。我有兩個應用程序,都具有相同的自定義背景圖像,並且一個工作得很好。另一方則不想合作。Android自定義背景使用列表適配器導致數字格式異常

<application 
    ... 
    android:theme="@style/MyTheme" > 

更改我的styles.xml(整個文件)以下:

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    <style name="MyTheme" parent="android:Theme.Holo"> 
    <item name="android:background">@drawable/dummy_background_image</item> 
    </style> 
</resources> 

同樣,這

我在AndroidManifest.xml中通過以下添加自定義主題對於應用#1來說工作得很好。但是,應用程序#2 ...

當我把這叫做:

setListAdapter(new ArrayAdapter<Game>(getActivity(), 
                android.R.layout.simple_list_item_activated_1, 
                android.R.id.text1, 
                gameCategories.getCategories())); 

它拋出:

01-22 21:30:21.439: E/AndroidRuntime(28044): FATAL EXCEPTION: main 
01-22 21:30:21.439: E/AndroidRuntime(28044): java.lang.NumberFormatException: Invalid int: "res/drawable/dummy_background_image.png" 
01-22 21:30:21.439: E/AndroidRuntime(28044): at java.lang.Integer.invalidInt(Integer.java:138) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at java.lang.Integer.parse(Integer.java:375) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at java.lang.Integer.parseInt(Integer.java:366) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at com.android.internal.util.XmlUtils.convertValueToInt(XmlUtils.java:122) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.content.res.TypedArray.getInt(TypedArray.java:255) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.view.animation.Animation.<init>(Animation.java:251) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.view.animation.AlphaAnimation.<init>(AlphaAnimation.java:40) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:117) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:92) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.view.animation.AnimationUtils.loadAnimation(AnimationUtils.java:73) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.support.v4.app.ListFragment.setListShown(ListFragment.java:290) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.support.v4.app.ListFragment.setListAdapter(ListFragment.java:186) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at com.example.legacy.GameListFragment.updateListAdapter(GameListFragment.java:107) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at com.example.legacy.GameListActivity.updateListAdapter(GameListActivity.java:158) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at com.example.legacy.databaseAccess.DatabaseAccessTask.onPostExecute(DatabaseAccessTask.java:57) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at com.example.legacy.databaseAccess.DatabaseAccessTask.onPostExecute(DatabaseAccessTask.java:1) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.os.AsyncTask.finish(AsyncTask.java:631) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.os.AsyncTask.access$600(AsyncTask.java:177) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.os.Looper.loop(Looper.java:137) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at android.app.ActivityThread.main(ActivityThread.java:5455) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at java.lang.reflect.Method.invokeNative(Native Method) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at java.lang.reflect.Method.invoke(Method.java:525) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
01-22 21:30:21.439: E/AndroidRuntime(28044): at dalvik.system.NativeStart.main(Native Method) 

當我經過調試模式下,應用程序會顯示應用簡單(前到達列表適配器),所以它至少可以找到該文件。

顯然,我知道它是一個字符串,並將其轉換爲int將會失敗。但是,爲什麼這將它轉換爲int並且沒有得到相應的數字?它爲什麼適用於應用程序#1和應用程序#2?

在此先感謝。

+2

發佈整個堆棧跟蹤 – stinepike

+0

當然,我可以做到這一點,當我回到那臺電腦。然而,我不確定你在找什麼 - 這是拋出的異常,我粘貼了棧跟蹤指向的那一行。 反正我會這樣做的,當然,我只是不知道你用來調試問題的信息,我想知道以備參考。 – JuniorIncanter

+0

@StinePike更新時間 – JuniorIncanter

回答

0

我正在嘗試使用自定義主題來設置背景圖像,如上所述。在我的情況下,我沒有調用setListAdaptor,但是當我將焦點從一個輸入字段切換到另一個字段時,拋出了相同的異常。此外,它只發生在Android 4.3上,而不是4.4。我不知道爲什麼它不起作用,因爲它似乎是這樣做的推薦方法之一,但我的解決方法是隻是以編程方式設置背景。當我從styles.xml文件中刪除「item」標記時,我停止了這個錯誤,並在我的Activity中添加了這個錯誤(我碰巧需要爲webview設置背景)。

webView.setBackgroundResource(R.drawable.background); 
+0

這最終奏效,並沿着正確的想法 我不得不使用: 'gameListFragment.getView ).setBackground(getResources()。getDrawable(R.drawable.dummy_background_imag e));' 如果你想更新它來提供正確的值,我會給你答案。 – JuniorIncanter

1

的問題是在

<item name="android:background">@drawable/dummy_background_image</item> 

而是使用

<item name="android:windowBackground">@drawable/dummy_background_image</item> 

,也將努力

0

而不是的android:背景使用安卓windowBackground。 ..這工作佛r我..

相關問題