2011-07-13 20 views
5

Android 2.2搭載のSamsung Galaxy Sでのみ発生すると思われる奇妙なエラーが発生しています。モトローラマイルストーン2のアプリケーションAndroid 2.2/Xperia X10 Android 1.6/Nexus One Android 2.2/Google G1 Android 1.5および1.5エミュレータとそのようなデバイスではエラーは発生しません)。Android:android.view.InflateException:バイナリXMLファイルの行#13:SAMSUNG Galaxy S <unknown>のエラーエラー

完全なスタックトレースは次のとおりです。すべての

ERROR/AndroidRuntime(28111): FATAL EXCEPTION: AsyncTask #2 
ERROR/AndroidRuntime(28111): java.lang.RuntimeException: An error occured while executing doInBackground() 
ERROR/AndroidRuntime(28111):  at android.os.AsyncTask$3.done(AsyncTask.java:200) 
ERROR/AndroidRuntime(28111):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
ERROR/AndroidRuntime(28111):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
ERROR/AndroidRuntime(28111):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
ERROR/AndroidRuntime(28111):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
ERROR/AndroidRuntime(28111):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
ERROR/AndroidRuntime(28111):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
ERROR/AndroidRuntime(28111):  at java.lang.Thread.run(Thread.java:1096) 
ERROR/AndroidRuntime(28111): Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class <unknown> 
ERROR/AndroidRuntime(28111):  at android.view.LayoutInflater.createView(LayoutInflater.java:513) 
ERROR/AndroidRuntime(28111):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
ERROR/AndroidRuntime(28111):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
ERROR/AndroidRuntime(28111):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:618) 
ERROR/AndroidRuntime(28111):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:621) 
ERROR/AndroidRuntime(28111):  at android.view.LayoutInflater.inflate(LayoutInflater.java:407) 
ERROR/AndroidRuntime(28111):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
ERROR/AndroidRuntime(28111):  at my.package.MyClass.b(Unknown Source) 
ERROR/AndroidRuntime(28111):  at my.package.MyClass.a(Unknown Source) 
ERROR/AndroidRuntime(28111):  at my.package.MyClass.updateUI(Unknown Source) 
ERROR/AndroidRuntime(28111):  at my.package.MyClass.UpdateUITask.doInBackground(Unknown Source) 
ERROR/AndroidRuntime(28111):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
ERROR/AndroidRuntime(28111):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
ERROR/AndroidRuntime(28111):  ... 4 more 
ERROR/AndroidRuntime(28111): Caused by: java.lang.reflect.InvocationTargetException 
ERROR/AndroidRuntime(28111):  at android.widget.EditText.<init>(EditText.java:101) 
ERROR/AndroidRuntime(28111):  at java.lang.reflect.Constructor.constructNative(Native Method) 
ERROR/AndroidRuntime(28111):  at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
ERROR/AndroidRuntime(28111):  at android.view.LayoutInflater.createView(LayoutInflater.java:500) 
ERROR/AndroidRuntime(28111):  ... 16 more 
ERROR/AndroidRuntime(28111): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
ERROR/AndroidRuntime(28111):  at android.os.Handler.<init>(Handler.java:121) 
ERROR/AndroidRuntime(28111):  at android.view.GestureDetector$GestureHandler.<init>(GestureDetector.java:250) 
ERROR/AndroidRuntime(28111):  at android.view.GestureDetector.<init>(GestureDetector.java:370) 
ERROR/AndroidRuntime(28111):  at android.view.GestureDetector.<init>(GestureDetector.java:347) 
ERROR/AndroidRuntime(28111):  at android.view.GestureDetector.<init>(GestureDetector.java:331) 
ERROR/AndroidRuntime(28111):  at android.widget.EditText.<init>(EditText.java:113) 
ERROR/AndroidRuntime(28111):  ... 20 more 

まず、何が起こっていますか?主なエラーは何ですか? Can't create handler inside thread that has not called Looper.prepare()またはandroid.view.InflateException: Binary XML file line #13: Error inflating class <unknown>

これは私がそのXML(R.layout.field_editable_label_value_numeric)ライン13 Viewを膨張させていたときに発生するようですは、次のとおりです。

 <EditText android:id="@+id/editableLabel" 
      android:layout_gravity="left|center_vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="5dp" 
      android:layout_weight="1" 
      android:textColor="@color/black" 
      android:textStyle="bold" /> 

編集:私は、私はProGuardのを使用していますことを伝えるのを忘れて、知りませんそれが何らかの形でこの問題に影響を与えていれば(私はそうは思わない)。

また、私は、問題が起こっていると思うのコードを追加:

MyClass.a:

final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
final ArrayList<View> views = MyClass.b(inflater); 

runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
      LinearLayout mainLayout = (LinearLayout) findViewById(R.id.ItemLinearLayout); 

      //clear UI 
      mainLayout.removeAllViews(); 

      //re-set all views 
      for (View view : views) { 
       mainLayout.addView(view); 
      } 
     } 
} 

MyClass.b:

final ArrayList<View> viewsToAdd = new ArrayList<View>(); 

View view = inflater.inflate(R.layout.field_editable_label_value_numeric, null, true); 
viewsToAdd.add(view); 

return views; 
+0

ビューを膨張させるコードを投稿する – dymmeh

+0

@ dymmehちょうど編集してコードを追加しました – pandre

答えて

7

答えてくれてありがとう、私が得た最高の説明はここにあった:Inflate a view in a background thread

基本的には、サムスンギャラクシーSは、そのインフレUIスレッドでのみ行うことができますEditText実装を持っているようです。

これは、同じ種類の問題に遭遇している人に役立ちます。

2

バックグラウンドスレッドからあなたのUIを更新しない - だけでUIスレッドを使用します。

AsyncTaskのdoInBackgroundメソッドでインフレが起こっているようなスタックトレースがあります。おそらくこの行です:

final ArrayList<View> views = MyClass.b(inflater); 

この場合、バックグラウンドスレッドから移動する必要があります。投稿したコードが実際にdoInBackgroundの場合は、runOnUiThreadブロックをonPostExecuteに移動することをおすすめします。

関連する問題