2012-10-22 27 views
1

我有一个自定义制作日历视图的问题。我有以下xml文件叫做calendar.xml。Android:ClassCastException无法将TextView转换为CalendarView

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

<Button 
    android:id="@+id/next_month_button" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:text="Next" /> 

<Button 
    android:id="@+id/prev_month_button" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:text="Previous" /> 

<no.blopp.app.views.CalendarView 
    android:id="@+id/calendarview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/next_month_button" /> 

<TextView 
    android:id="@+id/month_of_year_textview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/prev_month_button" 
    android:layout_alignBottom="@+id/prev_month_button" 
    android:layout_centerHorizontal="true" 
    android:text="September 2012" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

</RelativeLayout> 

当我尝试在活动中获取CalendarView时,我得到了一个classcastexception。下面是Java代码:

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.calendar); 

    calendarView = (CalendarView) findViewById(R.id.calendarview); 
    calendarView.setOnCellTouchListener(this); 
    } 

(我已经声明“私人CalendarView calendarView”上的代码的顶部,但奇怪的事情发生了与代码块的观察,当我试图把它复制中我是。新手,所以很抱歉)。 的classcast异常抛出时:

calendarView = (CalendarView) findViewById(R.id.calendarView); 

我不知道我在做什么错在这里。我的xml文件有问题吗?

+0

后CalendarView.java和fullstacktrace – njzk2

+0

记住这个“进口no.blopp.app.views.CalendarView”? – Tom

回答

0

你可以尝试这样的XML文件中声明命名空间为您的自定义组件:

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

... 

<mycomponent:no.blopp.app.views.CalendarView 
    android:id="@+id/calendarview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/next_month_button" /> 

... 

</RelativeLayout> 
+0

你没有看到答案,因为它已被删除,但提供了正确的答案:*删除项目中的“gen”文件夹,然后再次运行.. * – Luksprog