سؤال
لدي رمز يعمل 99٪ من الوقت ينشر منذ الكثير من العملاء، ولكن في بعض الأحيان أحصل على ما يلي:
java.lang.reflect.invocationtargetexception android.widget.linearlayout. (linearlayout.java:92) java.lang.reflect.constressor.construction (الطريقة الأصلية) java.lang.reflect.constressor.newinstance (brandor.java:446) Android .view.layoutinflater.createview (layoutinflater.java:499) com.android.internal.policy.impl.phonelayoutinflater.oncreateview (phonelayoutinflater.java:56) android.view.layoutinflater.createvieffromtag (layoutinflater.java:562) android.view .layoutinflater.rinflater (layoutinflater.java:617) android.view.layoutinflater.inflate (layoutinflater.java:407) android.view.layoutinflater.inflate (layoutinflater.java:320) com.mycode.mycode.mycleass.draw (xxxxxxx ) .....
وعلى التعليمات البرمجية لدي:
layoutinflater li = (layoutinflater) هذا .getsystemService (context.layout_inflater_service)؛
theview = li.inflate (r.layout.partofthescreen، somecontainer، false)؛
لذلك السؤال هو السبب في أنني أحصل على الاحتجاز.
شكرًا
المحلول
يمكنك المحاولة getLayoutInflater()
بدلا من الخاص بك getSystemService()
اتصل، على الرغم من أنني لست متأكدا من أن سيحدث فرقا.
أ InvocationTargetException
يأتي من التفكير، ويعني Method
التي تم الاحتجاج رمى Exception
. وبعد هل ترى أي علامة على تتبع مكدس آخر قد يكون الأساس Exception
ب إذا لم يكن كذلك، حاول اصطياد InvocationTargetException
وتبحث في getCause()
لمعرفة ما يجري حقا.
نصائح أخرى
انا ايضا املك نفس المشكلة.
أنا حل هذه المشكلة عن طريق:
جعل المتغير المحلي
private Context **context**;
ثم في منشئ الطبق الخاص بك (الذي يحتوي على سياق سياق الوسيطة) القيام بذلك
this.context=**context**;
LayoutInflater li = (LayoutInflater) **context** .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
theview = li.inflate(R.layout.partofthescreen, somecontainer, false);