修改TextView会导致程序崩溃

问题描述 投票:0回答:4

所以我在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文件中设置文本,它可以正常工作。

android android-layout android-activity
4个回答
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是包含TextView且id为char_name的xml文件。

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


0
投票

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

解:

setContentView(R.layout.yourlayoutname);

0
投票

更改以下代码

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

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


    }

0
投票

它应该是

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

    setContentView(R.layout.displayName);

    TextView charName = (TextView) findViewById(R.id.char_name);
    charName.setText("Bob");
}
© www.soinside.com 2019 - 2024. All rights reserved.