14

我有一个代码可以在 99% 的时间内运行,因为它部署在很多客户端中,但有时我会得到以下信息:

java.lang.reflect.InvocationTargetException android.widget.LinearLayout.(LinearLayout.java:92) java.lang.reflect.Constructor.constructNative(Native Method) 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) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
theview = li.inflate(R.layout.partofthescreen, somecontainer, false);

所以问题是为什么我会收到 InvocationTargetException。

谢谢

4

2 回答 2

20

您可以尝试getLayoutInflater()代替您的getSystemService()电话,但我不确定这会有所作为。

AnInvocationTargetException来自反射,意味着Method被调用的那个抛出了一个Exception. 您是否看到任何可能是底层堆栈跟踪的迹象Exception?如果没有,请尝试捕捉InvocationTargetException并查看getCause()实际情况。

于 2010-03-10T15:33:17.167 回答
10

我也有同样的问题。

我通过以下方式解决了这个问题:

制作局部变量

private Context **context**;

然后在您的类构造函数(具有参数上下文上下文)中执行此操作

this.context=**context**;

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

theview = li.inflate(R.layout.partofthescreen, somecontainer, false);
于 2010-04-07T16:43:41.273 回答