java.lang.ClassCastException:android.widget.ScrollView无法强制转换为android.widget.TextView

时间:2016-12-09 05:31:31

标签: java android

当用户点击ClassOne.java中的星标时,会打开另一个活动,即ClassTwo.java。然后用户输入评论&点击提交评论的复选标记&将他们带回ClassOne.java&在具有TextView的“评论”下显示他们的书面评论。

当我点击检查提交时,我一直收到错误。我该如何解决这个错误?

ClassOne.java Image ClassTwo.java Image

ClassTwo.java    

public ImageView sumbitCheck;
public Textview reviewDisplay;

submitCheck.setOnClickListener(new View.OnClickListener() { //submit check image
        @Override
        public void onClick(View v) {

            LayoutInflater inflater = getLayoutInflater(); //TextView inside ClassOne.java
            TextView text = (TextView) inflater.inflate(R.layout.ClassOne, null);
            reviewDisplay = (TextView) text.findViewById(R.id.display_review);


            Intent intent = new Intent(ClassTwo.this, ClassOne.class);
            startActivity(intent);
        }
    });

ClassOne.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scroll_view">

        <RelativeLayout
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_below="@+id/relativeLayout5"
          android:layout_centerHorizontal="true">

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Large Text"
            android:id="@+id/display_review" />
        </RelativeLayout>

<ScrollView>

ClassTwo.xml

<?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:background="#fff">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#257985"
    android:layout_alignParentTop="true"
    android:id="@+id/relativeLayout6"
    android:paddingBottom="10dp"
    android:layout_centerHorizontal="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentStart="true">

    <ImageView
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:id="@+id/back_arrow"
        android:src="@drawable/arrow"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="5dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Chipotle Chicken Fajitas"
        android:id="@+id/textView22"
        android:textSize="22sp"
        android:textColor="#fff"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="10dp" />

    <ImageView
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:id="@+id/submit_check"
        android:src="@drawable/submitarrow"
        android:layout_marginTop="11dp"
        android:layout_marginLeft="20dp" />

</LinearLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_below="@+id/relativeLayout6"
    android:layout_centerHorizontal="true"
    android:id="@+id/relativeLayout7">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="You&apos;re Review"
        android:id="@+id/textView21"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:textSize="20sp" />

    <RatingBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/ratingBar2"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:scaleX=".5"
        android:scaleY=".4"
        android:layout_alignParentBottom="true" />

   </RelativeLayout>

    <EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/relativeLayout7"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentBottom="true"
    android:hint="What did you think?"
    android:gravity="top"
    android:background="#e8e5e5"
    android:id="@+id/users_review" />


    </RelativeLayout>

2 个答案:

答案 0 :(得分:0)

请在ClassTwo.java

中查看以下一行
 TextView text = (TextView) inflater.inflate(R.layout.ClassOne, null);

此处布局xml文件ClassOne.xml的根目录为ScrollView。因此,当您要扩充该布局时,您需要将其转换为所有视图的ScrollViewView父级。

最好将每个膨胀的布局投射为View,然后使用findViewById()获取所有不同的视图。

所以改变你的行如下:

 View rootView = inflater.inflate(R.layout.ClassOne, null);

由于

答案 1 :(得分:0)

您还可以使用Intent更改textView的文本,该文本是当前活动中的另一个Activity。

在当前活动中: -

Intent intent= new Intent(CurrentActivity.this,CallingActivity.class);
                intent.putExtra("key","Review changed from a different activity");
                startActivity(intent);
                finish();

在您的通话活动的onCreate()中: -

Intent mIntent=getIntent();
        if(mIntent!=null){
            String msg=mIntent.getStringExtra("key");
            textView.setText(msg);
        }