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);