扩展用于扩展Layoutclass的复合组件的问题

问题描述 投票:2回答:1

我正在尝试扩展LinearLayout以用作复合组件。我遵循了本教程:link

这似乎很简单。但是,当我尝试给组件充气时,它总是会失败。我从logCat得到的错误是找不到我的班级。就我所知,就我所见,android在自己的组件中搜索我的组件(我不确定此处的正确措辞,请在下面提供),这对我来说似乎很奇怪。

我编写的代码如下:

主要(当前活动):

//just the ordinary autogenerated eclipse code...
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

我的扩展线性布局:

public class DialPadView extends LinearLayout {

public DialPadView(Context ctx, AttributeSet attr) {
    super(ctx, attr);
}


@Override
protected void onFinishInflate() {
    super.onFinishInflate();
    ((Activity)getContext()).getLayoutInflater().inflate(R.layout.dialpadview, this);
}

}

我的main.xml布局文件

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

最后是我的与我的复合组件一起使用的Dialpadview.xml文件:

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

当然我所有的课程文件都位于程序包whalenut.testinflate

中>

logCat这样说:

java.lang.RuntimeException:无法启动活动ComponentInfo {whalenut.testinflate / whalenut.testinflate.TestInflateActivity}:android.view.InflateException:二进制XML文件第2行:膨胀类DialPadView的错误

...

由:android.view.InflateException:二进制XML文件第2行:膨胀类DialPadView时出错

...

由以下原因造成:java.lang.ClassNotFoundException:加载程序dalvik.system.PathClassLoader中的android.view.DialPadView [/data/app/whalenut.testinflate-2.apk]

为什么Dalvik(?)在包android.view

中而不是whalenut.testinflate中搜索我的类,当我在xml文件中提供了完全限定的类名时,是因为它没有找不到从那里开始吗?

总之,为什么我不能,或者更确切地说我如何在android中扩展扩展版式?

我正在尝试扩展LinearLayout以用作复合组件。我遵循了本教程:链接,这似乎很简单。但是,当我尝试给组件充气时,它不会全部...

android components composite
1个回答
1
投票

您需要按以下方式更改DialPadView:

© www.soinside.com 2019 - 2024. All rights reserved.