0

私の活動では、カスタムメイドのコントロールがあります。onCreate では、アクティビティのビューを通常どおり次のように膨らませます。

setContentView(R.layout.image_viewer);

ここに私のxmlがあります:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <MyCustomImageView
    android:id="@+id/tivImage"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

</LinearLayout>

MyCustomTextView の短縮されたコードは次のとおりです。

 public class MyCustomImageView extends ImageView
 {
  Context context;

  public MyCustomImageView(Context context)
  {
    super(context);
    sharedConstructing(context);
  }

  public MyCustomImageView(Context context, AttributeSet attrs)
  {
    super(context, attrs);
    sharedConstructing(context);
  }
 }

生成される例外は次のとおりです。

android.view.InflateException: Binary XML file line #7: Error inflating class MyCustomImageView
4

2 に答える 2

4

パッケージ名を追加する必要があります。

 <com.my.package.MyCustomTextView
    android:id="@+id/tivImage"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />
于 2013-07-26T08:57:12.247 に答える
0

インフレータによって呼び出されるため、スーパークラス コンストラクターを呼び出すコンストラクターを作成する必要があります。

public class MyView extends View {

    public MyView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    public MyView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

}

そして、XML に完全なパッケージ名を入れる必要があります。

<com.mypackagename.MyView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />
于 2013-07-26T08:57:51.367 に答える