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);
    }
}

拡張したビューを作るときはすべてのコンストラクタを書いておく方が無難なのかもしれません。

では、また。

関連項目
プライバシーポリシー