InvocationTargetException при накачке xml - android - PullRequest
10 голосов
/ 10 марта 2010

У меня есть код, который работает в 99% случаев, так как развертывается на множестве клиентов, но иногда я получаю следующее:

java.lang.reflect.InvocationTargetException android.widget.LinearLayout. (LinearLayout.java:92) java.lang.reflect.Constructor.constructNative (собственный метод) 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) .....

и в моем коде у меня есть:

LayoutInflater li = (LayoutInflater) это .getSystemService (Context.LAYOUT_INFLATER_SERVICE);
theview = li.inflate (R.layout.partofthescreen, somecontainer, false);

поэтому вопрос в том, почему я получаю InvocationTargetException.

Спасибо

Ответы [ 2 ]

17 голосов
/ 10 марта 2010

Вы можете попробовать getLayoutInflater() вместо вашего getSystemService() звонка, хотя я не уверен, что это изменит.

InvocationTargetException происходит из отражения и означает, что Method, который был вызван, бросил Exception. Видите ли вы какие-либо признаки другой трассировки стека, которая может быть базовой Exception? Если нет, попробуйте поймать InvocationTargetException и посмотреть на getCause(), чтобы увидеть, что на самом деле происходит.

9 голосов
/ 07 апреля 2010

У меня тоже была такая же проблема.

Я решил эту проблему следующим образом:

Сделать локальную переменную

private Context **context**;

Затем в конструкторе вашего класса (который имеет контекст контекста аргумента) сделайте это

this.context=**context**;

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

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