2010-03-10 8 views
10

Ich habe einen Code, der seit 99% der Zeit arbeitet, ist in vielen Clients bereitstellen, aber manchmal bekomme ich folgendes:InvocationTargetException auf Aufblasen eines xml - android

java.lang.reflect.InvocationTargetException android.widget.LinearLayout (LinearLayout.java:92) java.lang.reflect.Constructor.constructNative (systemeigene Methode) java.lang.reflect.Constructor.newInstance (Constructor.java:446) android.view.LayoutInflater .createView (LayoutInflater.java:499) com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView (PhoneLayoutInflater.java:56) android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:562) android.view.LayoutInflater.rInflate (LayoutInflater.java:617) android.view.LayoutInflater.inflate (LayoutInflater.java:407) android.view. LayoutInflater.inflate (LayoutInflater.java:320) com.mycode.mycode.MyClass.draw (xxxxxxx) .....

und auf meinem Code ich habe:

LayoutInflater li = (LayoutInflater) dies .getSystemService (Context.LAYOUT_INFLATER_SERVICE);
theview = li.infllate (R.layout.partofthescreen, somecontainer, false);

so ist die Frage, warum ich InvocationTargetException bekomme.

Dank

Antwort

15

Sie können getLayoutInflater() statt Ihren getSystemService() Anruf versuchen, obwohl ich nicht sicher bin, dass ein Unterschied machen.

Eine InvocationTargetException kommt von Reflexion, und bedeutet, dass die Method, die aufgerufen wurde warf eine Exception. Sehen Sie Anzeichen für einen anderen Stack-Trace, der der zugrunde liegende Exception sein könnte? Wenn nicht, versuchen Sie, InvocationTargetException zu fangen und sich getCause() anzusehen, um zu sehen, was wirklich vor sich geht.

+0

Dank, ich werde versuchen, um an die Ursache zu kommen. –

8

Ich hatte auch das gleiche Problem.

löste ich dieses Problem durch:

die lokale Variable Stellen

private Context **context**; 

dann in der Klasse Konstruktor (das Argument Context Kontext hat) tun dies

this.context=**context**; 

LayoutInflater li = (LayoutInflater) **context** .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

theview = li.inflate(R.layout.partofthescreen, somecontainer, false); 
+0

Danke, es funktioniert perfekt, aber ich weiß nicht warum @@ – VAdaihiep

+1

Es ist, weil 'getContext()' könnte in einem anderen (umschlossenen) Kontext als der im Konstruktor übergeben – Takhion

Verwandte Themen