当我改变xml元素的位置时强制关闭

时间:2013-06-26 17:43:36

标签: android android-xml

我正在尝试重新组织我的一项活动。基本上,我想要做的是将一个linearlayout元素和文本元素从页面底部移动到中间。但是,当我执行并运行我的应用程序时,我收到此错误:

06-26 13:37:38.385: E/AndroidRuntime(11578): FATAL EXCEPTION: main
06-26 13:37:38.385: E/AndroidRuntime(11578): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.beerportfoliopro/com.example.beerportfoliopro.BeerPage}: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
06-26 13:37:38.385: E/AndroidRuntime(11578):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at android.app.ActivityThread.access$600(ActivityThread.java:151)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at android.os.Looper.loop(Looper.java:155)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at android.app.ActivityThread.main(ActivityThread.java:5536)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at java.lang.reflect.Method.invokeNative(Native Method)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at java.lang.reflect.Method.invoke(Method.java:511)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at dalvik.system.NativeStart.main(Native Method)
06-26 13:37:38.385: E/AndroidRuntime(11578): Caused by: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
06-26 13:37:38.385: E/AndroidRuntime(11578):    at com.example.beerportfoliopro.BeerPage.onCreate(BeerPage.java:49)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at android.app.Activity.performCreate(Activity.java:5066)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1102)
06-26 13:37:38.385: E/AndroidRuntime(11578):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)

我原来的xml是:

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

    <LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/beerTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:textSize="20sp"
        android:textStyle = "bold"
        android:padding="5dip"
        >
    </TextView>

    <ImageView android:id="@+id/image"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_margin="10dip"/>



    <TableLayout  

    android:id="@+id/tableLayout1"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:layout_gravity="center_horizontal"
    android:shrinkColumns="*"  
    android:stretchColumns="*"> 

    <TableRow
        android:id="@+id/tableStatTitles"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:padding="5dip" >

        <TextView
            android:id="@+id/abvTitle"
            android:text="ABV"
            android:gravity="center" 
            android:textStyle = "bold"
            android:textSize="20sp"
            android:layout_weight="1"

            ></TextView>

        <TextView
            android:id="@+id/IBUTitle"
            android:text="IBU"
            android:gravity="center" 
            android:textStyle = "bold"
            android:textSize="20sp"
            android:layout_weight="1"

            ></TextView>

        <TextView
            android:id="@+id/glassTitle"
            android:text="Glass"
            android:gravity="center" 
            android:textStyle = "bold"
            android:textSize="20sp"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            ></TextView>


        </TableRow>

    <TableRow
        android:id="@+id/tableStat"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:padding="5dip" >

        <TextView
            android:id="@+id/abv"
            android:text=""
            android:gravity="center" 
            android:textSize="15sp"
            android:layout_width="wrap_content"
            ></TextView>

        <TextView
            android:id="@+id/IBU"
            android:text=""
            android:gravity="center" 
            android:textSize="15sp"
            android:layout_width="wrap_content"
            ></TextView>

        <TextView
            android:id="@+id/glass"
            android:text=""
            android:gravity="center" 
            android:textSize="15sp"
            android:layout_width="wrap_content"
            ></TextView>


        </TableRow>

    </TableLayout> 







    <Button
        android:id="@+id/buttonBrewery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="5dip"
        android:text=""
        android:onClick="viewBrewery"
        />



    <Button
        android:id="@+id/buttonStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="5dip"
        android:text=""
        android:onClick="viewStyle"

        />

    <TextView
        android:id="@+id/beerDescriptionTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:padding="5dip"
        android:text="Description:"
        android:textSize="20sp"
        android:textStyle="bold" >
</TextView>
    <TextView
        android:id="@+id/beerDescription"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:textSize="15sp"
        android:padding="5dip"

        ></TextView>

    <TextView
        android:id="@+id/yourPortfolio"
        android:textStyle = "bold"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:textSize="20sp"
        android:text="Your Portfolio:"
        android:padding="5dip"
        ></TextView>

    <LinearLayout 
    android:id="@+id/addBeerLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

        </LinearLayout>

</LinearLayout>
</ScrollView>

我想要的那个和强制关闭应用程序的那个是:

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

    <LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/beerTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:textSize="20sp"
        android:textStyle = "bold"
        android:padding="5dip"
        >
    </TextView>

    <ImageView android:id="@+id/image"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_margin="10dip"/>



    <TableLayout  

    android:id="@+id/tableLayout1"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:layout_gravity="center_horizontal"
    android:shrinkColumns="*"  
    android:stretchColumns="*"> 

    <TableRow
        android:id="@+id/tableStatTitles"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:padding="5dip" >

        <TextView
            android:id="@+id/abvTitle"
            android:text="ABV"
            android:gravity="center" 
            android:textStyle = "bold"
            android:textSize="20sp"
            android:layout_weight="1"

            ></TextView>

        <TextView
            android:id="@+id/IBUTitle"
            android:text="IBU"
            android:gravity="center" 
            android:textStyle = "bold"
            android:textSize="20sp"
            android:layout_weight="1"

            ></TextView>

        <TextView
            android:id="@+id/glassTitle"
            android:text="Glass"
            android:gravity="center" 
            android:textStyle = "bold"
            android:textSize="20sp"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            ></TextView>


        </TableRow>

    <TableRow
        android:id="@+id/tableStat"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:padding="5dip" >

        <TextView
            android:id="@+id/abv"
            android:text=""
            android:gravity="center" 
            android:textSize="15sp"
            android:layout_width="wrap_content"
            ></TextView>

        <TextView
            android:id="@+id/IBU"
            android:text=""
            android:gravity="center" 
            android:textSize="15sp"
            android:layout_width="wrap_content"
            ></TextView>

        <TextView
            android:id="@+id/glass"
            android:text=""
            android:gravity="center" 
            android:textSize="15sp"
            android:layout_width="wrap_content"
            ></TextView>


        </TableRow>

    </TableLayout> 







    <Button
        android:id="@+id/buttonBrewery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="5dip"
        android:text=""
        android:onClick="viewBrewery"
        />



    <Button
        android:id="@+id/buttonStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="5dip"
        android:text=""
        android:onClick="viewStyle"

        />

    <TextView
        android:id="@+id/yourPortfolio"
        android:textStyle = "bold"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:textSize="20sp"
        android:text="Your Portfolio:"
        android:padding="5dip"
        ></TextView>

    <LinearLayout 
    android:id="@+id/addBeerLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

        </LinearLayout>

    <TextView
        android:id="@+id/beerDescriptionTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:padding="5dip"
        android:text="Description:"
        android:textSize="20sp"
        android:textStyle="bold" >
</TextView>
    <TextView
        android:id="@+id/beerDescription"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:textSize="15sp"
        android:padding="5dip"

        ></TextView>



</LinearLayout>
</ScrollView>

2 个答案:

答案 0 :(得分:2)

假设您没有更改xml或Java中的id's,您可能只需要清理项目

  

项目 - &gt;清理......然后选择你的项目

有时Eclipse不会立即获取xml更改,因此它会抛出这些类转换异常。简单地清理和重建项目通常会处理这些错误。这是一个快速简单的事情,在拉出你所有的头发之前试图弄清楚为什么你会得到这样的例外。

答案 1 :(得分:1)

从logcat的第二行:“... android.widget.LinearLayout无法转换为android.widget.TextView ...”似乎在你的java代码中你试图将LinearLayout强制转换为TextView。也许你正在做类似的事情:

... = (LinearLayout)findViewById(<some id>);

它应该是:

... = (TextView)findViewById(<some id>);

老实说,我没有阅读你的布局xml,但是这个特殊问题出现在你的java代码中而不是xml中。

希望这会有所帮助......