Android教程 - 当我尝试访问现有的文本视图时,为什么我的应用程序崩溃

时间:2015-03-13 03:02:11

标签: java android xml

我正在浏览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>

1 个答案:

答案 0 :(得分:1)

  

在我看来,我应该能够通过ID引用现有的文本视图,设置其文本,然后将内容视图设置为包含我引用的文本视图的布局

逻辑错误。只有在调用 setContentView()之后,才能使用 findViewById()从布局文件中获取视图,然后可以调用视图的方法。

您的intent.getStringExtra(MyActivity.EXTRA_MESSAGE)可以在 OnCreate()的任何地方进行调用,因此其位置没有任何问题。