2013-09-30 21 views
6

Kiedy tworzę niestandardowy View, gdzie w niektórych przypadkach muszę obsłużyć klasa Context przeszedł przez konstruktora dla klasy Activity, do wykonywania niektórych zadań jak nadmuchać do View bezpośrednio w moim zwyczaju View klasie, ja otrzymuję następujący błąd:Jak naprawić "java.lang.ClassCastException: com.android.layoutlib.bridge.android.BridgeContext nie można przesłać na android.app.Activity" wyjątek

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

jest to linia rzuca ten błąd:

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

Wygląda na to, że ten błąd występuje tylko wtedy, gdy Eclipse próbuje nadmuchać widok, który ma być wyświetlony w edytorze XML (nie występuje w środowisku wykonawczym).

Czy ktoś wie, jak to naprawić?

Z góry dziękuję.

Odpowiedz

7

Zmień połączenie na następujące. Powodem, dla którego otrzymujesz wyjątek klasy rzucania, jest to, że BridgeContext nie jest typu Activity.

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

Podobny problem dla mnie. 'if (((Activity) getContext()). isTaskRoot())' jest linią powodującą mój problem, którego nie rozwiązuje twoja (również całkiem pomocna) korekta pompowania. Wrócę, jeśli znajdę rozwiązanie ... –

+0

Czy znalazłeś rozwiązanie? @ WilliamT.Mallard Dzięki – sipi

+4

Sortowanie. Więcej rzeczy z kobyashi maru. Widziałem tylko problem kontekstu mostka w graficznym edytorze ADT w Eclipse i domyśliłem się, że błąd pochodzi od edytora próbującego wykonać kod dla niestandardowego widoku, a nie z powodu niemożliwego do napełnienia problemu, który miałem, gdy uruchomiłem app (który okazał się prostym sennym literopisem :() .Aby nadal używać edytora layoutu, użyłem 'if (! View.isInEditMode()) {} do otaczania dowolnego kodu zależnego od kontekstu. podgląd nie jest ładny, ale pozwala mi nadal widzieć inne kontrolki –

Powiązane problemy