我正在浏览Android教程here。我按照他们的方式实现它没有问题。但是,我试图理解为什么这种方式失败了。如果我启用两个注释掉的行并注释掉它们后面的行,我的应用程序崩溃了。在我看来,我应该能够通过ID引用现有的文本视图,设置其文本,然后将内容视图设置为包含我引用的文本视图的布局。我确信我正在以错误的方式思考这个问题,但我想澄清为什么它不起作用。
String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
//TextView textView = (TextView)findViewById(R.id.text_view);
TextView textView = new TextView(this); //comment this out
textView.setTextSize(40);
textView.setText(message);
//setContentView(R.layout.activity_display_message);
setContentView(textView); //comment this out
和我的xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.<myname>.myfirstapp.DisplayMessageActivity">
<TextView
android:id="@+id/text_view"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
答案 0 :(得分:1)
在我看来,我应该能够通过ID引用现有的文本视图,设置其文本,然后将内容视图设置为包含我引用的文本视图的布局
逻辑错误。只有在调用 setContentView()之后,才能使用 findViewById()从布局文件中获取视图,然后可以调用视图的方法。
您的intent.getStringExtra(MyActivity.EXTRA_MESSAGE)
可以在 OnCreate()的任何地方进行调用,因此其位置没有任何问题。