关于膨胀xml的InvocationTargetException - android

时间:2010-03-10 13:53:37

标签: xml android inflate

我有一个代码在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)这个                       .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              theview = li.inflate(R.layout.partofthescreen,                       somecontainer,false);

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

由于

2 个答案:

答案 0 :(得分:17)

您可以尝试getLayoutInflater()而不是getSystemService()来电,但我不确定这会有所作为。

InvocationTargetException来自反射,表示调用的Method投放Exception。您是否看到任何可能是基础Exception的堆栈跟踪的迹象?如果没有,请尝试抓取InvocationTargetException并查看getCause()以查看实际情况。

答案 1 :(得分:9)

我也有同样的问题。

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

制作局部变量

private Context **context**;

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

this.context=**context**;

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

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