facebook twitter hatena line email

「Android/レイアウト/カスタムレイアウトファイルをjavaで取得」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「=="android.view.InflateException: Binary XML file Error inflating class inflater.inflate("エラーが出る時==」)
 
 
(同じ利用者による、間の1版が非表示)
行1: 行1:
 +
==カスタムレイアウト呼び出し==
 +
CustomView itemLayout = (CustomView)inflater.inflate(R.layout.costum1, null);
 +
 +
res/layout/custom1.xml
 +
<pre>
 +
<jp.co.hoge.hogeproject.CustomView xmlns:android="http://schemas.android.com/apk/res/android"
 +
    android:orientation="vertical"
 +
    android:layout_width="wrap_content"
 +
    android:layout_height="match_parent"
 +
    >
 +
        <TextView
 +
            android:id="@+id/bodyView"
 +
            android:layout_width="wrap_content"
 +
            android:layout_height="wrap_content"
 +
            android:text="hoge"
 +
            />
 +
</jp.co.hoge.hogeproject.CustomView>
 +
</pre>
 +
 
=="android.view.InflateException: Binary XML file  Error inflating class inflater.inflate("エラーが出る時==
 
=="android.view.InflateException: Binary XML file  Error inflating class inflater.inflate("エラーが出る時==
 +
publicのconstructを4つすべて作成すると治る。
 +
<pre>
 +
public class CustomView extends LinearLayout {
 +
    public CustomView(Context context) {
 +
        super(context);
 +
    }
 +
    public CustomView(Context context, AttributeSet attrs) {
 +
        super(context, attrs);
 +
    }
 +
    public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
 +
        super(context, attrs, defStyleAttr);
 +
    }
 +
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
 +
    public CustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
 +
        super(context, attrs, defStyleAttr, defStyleRes);
 +
    }
 +
}
 +
</pre>

2019年8月27日 (火) 14:25時点における最新版

カスタムレイアウト呼び出し

CustomView itemLayout = (CustomView)inflater.inflate(R.layout.costum1, null);

res/layout/custom1.xml

<jp.co.hoge.hogeproject.CustomView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    >
        <TextView
            android:id="@+id/bodyView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="hoge"
            />
</jp.co.hoge.hogeproject.CustomView>

"android.view.InflateException: Binary XML file Error inflating class inflater.inflate("エラーが出る時

publicのconstructを4つすべて作成すると治る。

public class CustomView extends LinearLayout {
    public CustomView(Context context) {
        super(context);
    }
    public CustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public CustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }
}