修改TextView会导致程序崩溃

时间:2014-04-25 07:08:06

标签: android android-layout android-activity

所以我在xml中定义了一个布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="center">

    <TextView
        android:id="@+id/char_name"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

</LinearLayout> 

但是当我尝试在java中更改任何内容时,我的程序崩溃了。

public class DisplayMessageActivity extends Activity {

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TextView charName = (TextView) findViewById(R.id.char_name);
    charName.setText("Bob");
    setContentView(R.layout.displayName);

    }
}

我的应用程序编译并运行,但当它切换到此Activity时,它会崩溃。如果我在xml文件中设置文本,它可以正常工作。

4 个答案:

答案 0 :(得分:1)

您尚未为活动设置内容。在onCreate中添加以下内容:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);

    TextView charName = (TextView) findViewById(R.id.char_name);
    charName.setText("Bob");
}

其中your_layout.xml xml 文件,其中包含TextView id char_name

注意:您应该在初始化TextView charName之前设置内容。

答案 1 :(得分:0)

将包含textView的布局添加到您的活动中:

<强>溶液

setContentView(R.layout.yourlayoutname);

答案 2 :(得分:0)

更改以下代码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.displayName);

    TextView charName = (TextView) findViewById(R.id.char_name);
    charName.setText("Bob");


    }

答案 3 :(得分:0)

应该是

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.displayName);

    TextView charName = (TextView) findViewById(R.id.char_name);
    charName.setText("Bob");
}