InvocationTargetException при раздувании xml - андроида

У меня есть код, который работает 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.partscreen,                     somecontainer, false);

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

Спасибо

Ответ 1

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

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

Ответ 2

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

Я решил эту проблему:

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

private Context **context**;

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

this.context=**context**;

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

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