InvocationTargetException auf eine XML-Aufblasen - android
Frage
Ich habe einen Code, der 99% der Zeit ist in vielen Clients bereitstellen, da funktioniert, aber manchmal bekomme ich die folgende:
java.lang.reflect.InvocationTargetException android.widget.LinearLayout. (LinearLayout.java:92) java.lang.reflect.Constructor.constructNative (native 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) diese .getSystemService (Context.LAYOUT_INFLATER_SERVICE);
TheView = li.inflate (R.layout.partofthescreen, somecontainer, false);
Die Frage ist also, warum ich InvocationTargetException bin immer.
Danke
Lösung
Sie können versuchen getLayoutInflater()
statt Ihrem getSystemService()
Anruf, obwohl ich nicht sicher bin, die einen Unterschied machen wird.
Ein InvocationTargetException
kommt aus der Reflexion, und bedeutet, dass die Method
, die aufgerufen wurde eine Exception
warf. Haben Sie ein Zeichen eines anderen Stack-Trace sehen, dass die zugrunde liegende Exception
sein könnte? Wenn nicht, versuchen InvocationTargetException
Fang und Blick auf getCause()
, um zu sehen, was wirklich los ist.
Andere Tipps
Ich hatte auch das gleiche Problem.
Ich löste dieses Problem durch:
Machen Sie die lokale Variable
private Context **context**;
Dann in Ihrer 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);