将纵向更改为横向时,Android应用程序强制关闭

时间:2014-09-11 02:11:41

标签: android android-layout android-view android-xml

这是我的LogCat错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jc.jcpremiere/com.jc.jcpremiere.activity2}: java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class android.os.Bundle instead. This usually happens when two views of different type have the same id in the same hierarchy. This view's id is id/aboutview. Make sure other views do not use the same id.

每当我将手机从纵向切换到横向时,我都会得到这个。我有/layout/layout-land的布局,只包含一个显示图像的视图,但在纵向上,它可以被捏合和缩放,并且在centerInside上,在横向上它是{{1 }}

这是我的肖像布局

fitxy

对于我的风景

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

    <com.jc.jcpremiere.TouchImageView
        android:id="@+id/aboutview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:adjustViewBounds="true"
        android:background="@color/White"
        android:scaleType="centerInside" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

您的android:id="@+id/aboutview"com.jc.jcpremiere.TouchImageView课程都有ImageView

android:id必须是唯一的,因此没有两个组件可以拥有相同的Android ID。只需将一个Android ID更改为其他内容即可解决问题。

此外,纵向和横向模式都有TouchImageViewImageView - 每种模式都没有不同类型的View组件。

答案 1 :(得分:1)

您的imageview的类型正在从potrait变为横向模式。 Potrait使用 ImageView ,而横向使用 TouchImageView 。所以你的findViewById()方法引用了横向模式中的错误视图对象。尝试在你的java类中将imageView的对象更改为TouchImageView然后我猜你的potrait模式会崩溃。