android.support.constraint.ConstraintLayout无法转换为android.widget.TextView

时间:2018-12-23 18:23:44

标签: android

我是Android Studio的新手。 我正在尝试编写具有2个屏幕的简单应用程序,并将信息从屏幕1传递到屏幕2。

这是第二个活动的代码。

public class SecondActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    if(getIntent().hasExtra("com.gmail.zionrevi.SOMETHING")) {

        String text = getIntent().getExtras().get("com.gmail.zionrevi.SOMETHING").toString();
        TextView tv = (TextView)findViewById(R.id.textview);
        tv.setText(text);
   }
}

}

运行时,出现以下运行时异常:

E / AndroidRuntime:致命异常:主要

android.support.constraint.ConstraintLayout无法转换为android.widget.TextView

在下一行

TextView tv = (TextView)findViewById(R.id.textview);

我做错了什么? 有人可以帮我吗?

3 个答案:

答案 0 :(得分:0)

学习Android的一部分是了解错误。当您被告知typeX cannot be cast to typeY时,几乎总是意味着您正在尝试将某些内容转换为错误的类型。

在这种情况下,它似乎在TextView tv = (TextView)findViewById(R.id.textview);处发生。当您执行诸如(TextView)findViewById(R.id.textview)之类的操作时,您会将findViewById(...)返回的任何内容强制转换为TextView。如果您传递给该函数的ID不是TextView,则会得到一个ClassCastException

对于您而言,很可能在此活动的.xml文件中有一个ConstrainLayout,其ID为textview

答案 1 :(得分:0)

欢迎来到android编程.. 我认为您的R.id.textview是指[ConstraintLayout] 您应该将您的[textview] id设置为[@ + id / textview],然后当然要从yourConstraintLayout中清除它。 解决了 :) 编程愉快

答案 2 :(得分:0)

您正在尝试将ConstraintLayout强制转换为TextView,但无法成功。他们是两个完全不同的观点。

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                         android:layout_width="match_parent"
                                         android:id="@+id/textView"
                                         android:layout_height="match_parent">

您需要在XML布局中设置TextView或将ConstraintLayout id更改为其他ID,并将TextView id设置为textView