0

我是android编程的新手...所以请耐心等待..

我正在尝试将自定义视图(ArticleView)加载到活动中,其中我的自定义视图定义为活动类的子类。我为包含自定义视图的活动创建了以下 xml 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/MainLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ArticleLayout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <aarddict.android.ArticleView // here's the line # 14
            android:id="@+id/ArticleView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ButtonLayout"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="5dp"
        android:layout_marginRight="5dp"
        android:gravity="bottom" >

        <Button
            android:id="@+id/NextButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableRight="@drawable/ic_next"
            android:visibility="gone" />
    </LinearLayout>

</RelativeLayout>

发生的事情是我不断收到运行时错误(应用程序死掉),查看我得到的 LogCat:

    05-24 23:41:06.685: E/AndroidRuntime(600): java.lang.RuntimeException: Unable to start activity ComponentInfo{aarddict.alidev.android/aarddict.alidev.android.ArticleViewActivity}: android.view.InflateException: Binary XML file line #14: Error inflating class aarddict.android.ArticleView
05-24 23:41:06.685: E/AndroidRuntime(600):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
05-24 23:41:06.685: E/AndroidRuntime(600):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-24 23:41:06.685: E/AndroidRuntime(600):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-24 23:41:06.685: E/AndroidRuntime(600):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-24 23:41:06.685: E/AndroidRuntime(600):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-24 23:41:06.685: E/AndroidRuntime(600):  at android.os.Looper.loop(Looper.java:137)
05-24 23:41:06.685: E/AndroidRuntime(600):  at android.app.ActivityThread.main(ActivityThread.java:4424)
05-24 23:41:06.685: E/AndroidRuntime(600):  at java.lang.reflect.Method.invokeNative(Native Method)

代码:

interface ScrollListener {
    void onScroll(int l, int t, int oldl, int oldt);
}

private ScrollListener scrollListener;

public ArticleView(Context context) {
    super(context);
}

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

public ArticleView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
    super.onScrollChanged(l, t, oldl, oldt);
    if (scrollListener != null) {
        scrollListener.onScroll(l, t, oldl, oldt);          
    }
}

public void setOnScrollListener(ScrollListener l) {
    this.scrollListener = l;
}
}
4

2 回答 2

1

如果您要创建一个您想要的自定义视图或其中一个子视图(// ) ,则您不能Activity在其中添加一个Activityextend ViewLinearLayoutRelativeLayoutTextView

http://developer.android.com/guide/topics/ui/custom-components.html

于 2012-05-24T20:56:16.470 回答
0

正确答案是错误的。您可以在项目上定义不同的活动。错误很简单
aarddict.android.ArticleView must be yourpackagename.ArticleView

于 2013-08-03T06:47:09.530 回答