我有一个代码在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。
由于
答案 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);