2013-09-30 116 views
6

當我創建一個自定義View,在某些情況下我需要投射在Context類通過構造被傳爲Activity類,製作一些任務,如膨脹一個View直接我的自定義View類中,我發現了以下錯誤:如何解決「java.lang.ClassCastException:com.android.layoutlib.bridge.android.BridgeContext無法轉換爲android.app.Activity」異常

java.lang.ClassCastException: com.android.layoutlib.bridge.android.BridgeContext cannot be cast to android.app.Activity 

這是引發此錯誤行:

View headerView = ((Activity) context).getLayoutInflater().inflate(R.layout.fragment_history_list_header, null); 

看來只有當Eclipse嘗試膨脹要在XML編輯器中顯示的視圖時纔會出現此錯誤(不會在運行時出現)。

有人知道如何解決它嗎?

在此先感謝。

回答

7

將呼叫更改爲以下內容。您得到類轉換異常的原因是因爲BridgeContext不是Activity類型。

View headerView = LayoutInflater.from(context).inflate(R.layout.fragment_history_list_header, null); 
+0

對我而言,類似的問題。 if(((Activity)getContext())。isTaskRoot())'是導致我的問題的線,這不是由你的(也很有幫助的)inflater修復程序解決。如果我找到解決方案,我會回來... –

+0

您是否找到解決方案? @ WilliamT.Mallard謝謝 – sipi

+4

類別。更多的是kobyashi maru的東西。我只在Eclipse的ADT圖形編輯器中看到了橋接上下文問題,並且猜測錯誤來自編輯器試圖執行自定義視圖的代碼,而不是我在運行時遇到的無法膨脹的問題應用程序(其結果是由一個簡單的睏倦的錯字:()。爲了仍然使用佈局編輯器,我用'if(!View.isInEditMode()){}'來包圍任何依賴於上下文的代碼。預覽並不漂亮,但它讓我仍然可以看到其他控件 –

相關問題