<< Android-Note
Error inflating class の対処法
既存のビューを拡張してカスタムビューを作った場合、次のようなエラーが出ることがあります。
06-22 12:46:51.321: E/AndroidRuntime(32474): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.myapp/com.xxx.myapp.MainActivity}: android.view.InflateException: Binary XML file line #31: Error inflating class com.xxx.myapp.MyTextView
このようなエラーが出る場合、コンストラクタに原因があることがあります。
例えば次のようにContextだけを引数にとるコンストラクタしか書いていない場合にこのエラーが起こる可能性があります。
public class MyTextView extends EditText { public MyTextView(Context context) { super(context); } }
これを解消するにはこれに加えて次の2つのコンストラクタを追加すればOKです。
public class MyTextView extends EditText { public MyTextView(Context context) { super(context); } /**追加*/ public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); } /**追加*/ public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } }
拡張したビューを作るときはすべてのコンストラクタを書いておく方が無難なのかもしれません。
では、また。
© Kaz