2010-04-09 57 views
37

雖然開始我的應用程序獲得的logcat以下警告:Android:如何追查InflateException的起源?

04-09 10:28:17.830: WARN/WindowManager(52): Exception when adding starting window 
04-09 10:28:17.830: WARN/WindowManager(52): android.view.InflateException: Binary XML file line #24: Error inflating class <unknown> 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.view.LayoutInflater.createView(LayoutInflater.java:513) 
04-09 10:28:17.830: WARN/WindowManager(52):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
04-09 10:28:17.830: WARN/WindowManager(52):  at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2153) 
04-09 10:28:17.830: WARN/WindowManager(52):  at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:2207) 
04-09 10:28:17.830: WARN/WindowManager(52):  at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1395) 
04-09 10:28:17.830: WARN/WindowManager(52):  at com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:818) 
04-09 10:28:17.830: WARN/WindowManager(52):  at com.android.server.WindowManagerService$H.handleMessage(WindowManagerService.java:8794) 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.os.Looper.loop(Looper.java:123) 
04-09 10:28:17.830: WARN/WindowManager(52):  at com.android.server.WindowManagerService$WMThread.run(WindowManagerService.java:531) 
04-09 10:28:17.830: WARN/WindowManager(52): Caused by: java.lang.reflect.InvocationTargetException 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.widget.FrameLayout.<init>(FrameLayout.java:79) 
04-09 10:28:17.830: WARN/WindowManager(52):  at java.lang.reflect.Constructor.constructNative(Native Method) 
04-09 10:28:17.830: WARN/WindowManager(52):  at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.view.LayoutInflater.createView(LayoutInflater.java:500) 
04-09 10:28:17.830: WARN/WindowManager(52):  ... 13 more 
04-09 10:28:17.830: WARN/WindowManager(52): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x1010059 a=-1} 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.content.res.Resources.loadDrawable(Resources.java:1677) 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.content.res.TypedArray.getDrawable(TypedArray.java:548) 
04-09 10:28:17.830: WARN/WindowManager(52):  at android.widget.FrameLayout.<init>(FrameLayout.java:91) 
04-09 10:28:17.830: WARN/WindowManager(52):  ... 17 more 

我的應用有以下閃屏啓動:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:windowBackground="@color/white" android:background="@color/white" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:foregroundGravity="center"> 

    <ImageView android:id="@+id/ImageView01" 
     android:layout_width="fill_parent" android:layout_height="fill_parent" 
     android:adjustViewBounds="true" android:scaleType="centerInside" 
     android:src="@drawable/splash" android:layout_gravity="center" /> 


</ScrollView> 

飛濺的是,在啓動畫面顯示的圖像。我有這四個文件夾,用在我的應用程序存儲繪項目:

/RES /提拉 - 華電國際
/RES /提拉 - LDPI
/RES /提拉 - MDPI
/RES /繪製-nodpi

飛濺圖像在前三個版本中有自己的版本,並且顯示正確。 從ImageView中刪除src屬性將刪除圖像,但不會發生異常。

我有點失落,在哪裏尋找異常的原因。我甚至不知道這是否真的是這個佈局文件中的問題等。

你會如何去尋找這個警告的原因?

+0

那麼,尋找一個文件,有24行'XML文件行#24' – Pentium10 2010-04-09 08:43:45

+6

幾乎所有我的佈局文件都比24行更長。 – Janusz 2010-04-09 09:26:05

+0

當我在樣式屬性中設置一個不可拉伸的(尺寸在我的情況下)時,我有一個類似的問題,它需要一個可繪製的樣式屬性。我希望構建器(XML sanitiser?)在構建發生之前發出警告。 – Diederik 2012-06-21 11:58:34

回答

52

我有同樣的確切錯誤。唯一有意義的xml行24是我的應用程序清單,它恰好是應用程序的結束標記。我將它追溯到我爲應用程序添加的自定義主題 - 我沒有定義樣式的父項。所有我需要做的是添加父=「android:主題」我的風格,我的錯誤消失了。

<style name="MyTheme" parent="android:Theme"> 
... 
</style> 
1
04-09 10:28:17.830: WARN/WindowManager(52): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x1010059 a=-1 

該行是贈品。系統對您的某個資源不滿意,可能是'src'資源,可能是android:src="@drawable/splash"

+0

我刪除了src屬性和兩個背景屬性都沒有成功,現在初始屏幕是空的,但異常仍然存在。 – Janusz 2010-04-09 09:22:36

+0

Eesh。好的,下一步,嘗試刪除整個ImageView標籤,看看它是否是該標籤中的問題。 – 2010-04-09 09:29:29

+1

也做到了。沒有幫助。我認爲這可能是另一個XML文件。就像定義整個應用程序樣式的文件一樣,但我不知道在哪裏尋找。 – Janusz 2010-04-09 11:30:20

0

錯誤位於您的XML文件的第24行。那條線包含什麼?通過錯誤信息的外觀

android.view.InflateException: Binary XML file line #24: Error inflating class <unknown> 

您正在使用自定義類,但尚未正確定義某些內容。例如,你是否正確定義了包名?也許它的構造函數沒有格式化?我們必須看到XML文件,特別是第24行的內容,才能提供更多信息。

+0

在發生異常之後顯示的第一個屏幕是splashscreen,並且此xml文件不是24行。 而XML的前面的二進制文件說我不會在我的XML文件的第24行找到任何東西。 – Janusz 2010-04-09 11:29:07

+0

我不知道爲什麼它在說它是XML文件行#24之前指定了'binary',但是*是其中存在問題的行。我剛剛在我的一個XML文件中引入了故意的錯誤(將自定義視圖重命名爲某些不存在的內容),並且我爲您獲得了類似的異常日誌。它說'android.view.InflateException:二進制XML文件行#90:錯誤膨脹類(mypackage.myclass ...)'。所以,你需要弄清楚它打開的是哪個XML文件,然後看看第24行。例如,你的啓動畫面下面是否有其他活動? – 2010-04-09 11:58:52

+0

對不起,我的意思是添加更多關於我的錯誤信息的細節。它將故障線路報告爲#90,這與問題的確切線 - 我手工計算。然後,當我修改文件並移動東西時,行號正確變化。因此,我們知道其中一個文件中存在第24行,可能會造成問題,即使根源可能在其他位置。如果在啓動畫面下方還有其他活動可見,則可能會導致該文件的XML文件膨脹。 – 2010-04-09 12:23:59

1

在2.0仿真器上運行時出現類似錯誤。我使用了更新版本的API(版本7,2.1-update1),它工作。

2

我有同樣的問題,這是因爲我通過應用程序上下文而不是活動上下文。

0

我知道這有點遲,但我花了整整一天的時間來試圖找出這個問題,最後在this的幫助下SO問題我在我試用的例子中實現了一個XML文件,它使用了後來的一個功能API和Lint沒有抓住它,因爲該文件沒有改變。只要我對XML文件進行了隨機編輯並保存了該文件,那麼出現了關於後來API的錯誤。

0

上發現爲什麼應用程序崩潰和爲什麼它不顯示logcat的

答案這麼多忙碌的研究後,我也剛剛更換此

android:configChanges="orientation|keyboardHidden" 

android:configChanges="keyboardHidden|orientation|screenSize" 

活動標籤。