虽然这往往是一个非常基本的问题,但我无法解决这个问题。我搜索了类似的问题但没有解决我的问题。
我创建了自己的类,我在其中创建了一些基本控件,并在我的xml中将此类称为
<com.mypackagename.classname
..
..
/>
并且有些观点在此内部。在此之前,我想将relativelayout添加为
activity_main1.xml:
<RelativeLayout xmlns:android="schemas.android.com/apk/res/android"
xmlns:android1="http://schemas.android.com/apk/res/android"
android1:layout_width="match_parent"
android1:layout_height="wrap_content" >
<com.test.MainLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/drawer_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/ic_drawer" />
</LinearLayout>
</com.test.MainLayout>
</RelativeLayout >
和我宣布的主要活动是 的 MainActivity:
Myview view;
view = (Myview)this.getLayoutInflater().inflate(R.layout.activity_main1, null);
setContentView(view);
其中MyView是我拥有自己的控件的类。
添加相对布局后,我尝试了类似
的内容MainActivity1.java:
public class MainActivity1 extends FragmentActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
RelativeLayout item = (RelativeLayout)findViewById(R.id.item);
view = (Myview)this.getLayoutInflater().inflate(R.layout.activity_main1, null);
item.addView(view);
setContentView(item); // facing an error here
.......... rest of the code
}
我的布局活动是
public class MainLayout1 extends LinearLayout
{
....
}
在运行它时抛出classcastexception,错误是
java.lang.ClassCastException:android.widget.RelativeLayout无法强制转换为com.view.layout.MainLayout
答案 0 :(得分:0)
view =(Myview)this.getLayoutInflater()。inflate(R.layout.activity_main1,null);
在你的java类中,你在视图中得到MyView
Object,但它实际上是一个布局文件实例,它在这里返回它的父布局RelativeLayout
。
自膨胀(R.layout.activity_main1,null);返回RelativeLayout
的对象。取而代之的是,您必须获取MainLayout1的实例(R.id.mainlayout),然后将其转换为MyView
对象,如:
RelativeLayout item = (View)this.getLayoutInflater().inflate(R.layout.activity_main1,null);
view = (Myview) item.findViewById(R.id.mainlayout);
item.addView(view);
setContentView(item);