我是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);
我做错了什么? 有人可以帮我吗?
答案 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