Android:ClassCastException

时间:2012-10-27 15:35:13

标签: android xml classcastexception

我正在重新设计我的应用程序,设置一些动画。现在我的活动基本上都是

<LinearLayout>
    <LinearLayout>
        <!-- THE HEADER AND A BUTTON -->
    </LinearLayout>
    <View>
        <!-- A SEPARATION LINE -->
    </View>
    <ScrollView>
        <!-- THE CONTENT -->
    </ScrollView>
</LinearLayout>

动画始终设置为从左侧推入标题+行,然后从按钮推入内容。现在在特定的Activity我看到行View被放入ScrollView(那里有一个RelativeLayout,因为ScrollView只能有一个private void animateHeaderAndContent(){ LinearLayout header = (LinearLayout) findViewById(R.id.overview_lin_0); header.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in_header)); ScrollView content = (ScrollView) findViewById(R.id.sv_overview_content); content.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_up_in_content)); } 子)。

当我第一次设置动画时(行位置错误,一切正常):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" 
        android:layout_height="match_parent"
        android:orientation="vertical" 
        >
        <LinearLayout 
            android:id="@+id/overview_lin_0"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >
            (...)
        </LinearLayout>

        <ScrollView android:id="@+id/sv_overview_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
            <RelativeLayout 
                android:id="@+id/rel_over" 
                android:orientation="vertical"
                android:layout_width="match_parent" 
                android:layout_height="wrap_content"        
                >
                 <View   
                    android:id="@+id/v_overview_line1"
                    android:layout_height="1dp"
                    android:layout_width="match_parent"
                    android:layout_marginBottom="10dp"
                    android:background="#FFFFFF"
                    />

                (...)
xml中的

ScrollView content = (ScrollView) findViewById(R.id.sv_overview_content);

当我编辑代码和xml如下所示时,它在行private void animateHeaderAndContent(){ LinearLayout header = (LinearLayout) findViewById(R.id.overview_lin_0); header.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in_header)); View line = (View) findViewById(R.id.v_overview_line1); line.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in_header)); ScrollView content = (ScrollView) findViewById(R.id.sv_overview_content); content.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_up_in_content)); } 给出了一个ClassCastException,它与之前完全相同。

代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="match_parent"
    android:orientation="vertical" 
    >
    <LinearLayout 
        android:id="@+id/overview_lin_0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <View 
            android:layout_width="25dp"
            android:layout_height="0dp"
            />
        <TextView 
            style="@style/TextHeader"
            android:id="@+id/tv_overview_name"
            android:layout_width="0dp"
            android:layout_weight="8"
            android:gravity="center"
            android:layout_height="wrap_content"
            />
        <ImageButton style="@style/ImageButtonSmall"
            android:layout_width="26dp"
            android:layout_height="26dp" 
            android:src="@drawable/ic_action_delete"
            android:contentDescription="@string/desc"
            android:onClick="onClickDeleteBet"
            />
    </LinearLayout>

    <View   
        android:id="@+id/v_overview_line1"
        android:layout_height="1dp"
        android:layout_width="match_parent"
        android:layout_marginBottom="10dp"
        android:background="#FFFFFF"
        />

    <ScrollView 
        android:id="@+id/sv_overview_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <RelativeLayout 
            android:id="@+id/rel_over" 
            android:orientation="vertical"
            android:layout_width="match_parent" 
            android:layout_height="wrap_content"        
            >
            (...)
xml中的

View

如何解释(因为在两种情况下都是相同的操作,除了中间有findViewById(...)不应该干扰{{1}})?

1 个答案:

答案 0 :(得分:1)

R类中的引用可能未正确更新。这有时会发生。在eclipse中销毁生成的R文件(在文件夹gen下)。然后马上重启eclipse。 接下来,选择项目并点击Project - &gt; Clean... 然后再次构建您的应用程序,并重新生成R类。

我希望这会有所帮助。