【问题标题】:TextView.setText (Android) is causing crashes.. any idea why?TextView.setText(Android)导致崩溃..知道为什么吗?
【发布时间】:2013-08-10 16:45:12
【问题描述】:

尝试开始 Android 开发,并使用 TextViews 做一些基本工作..

由于某种原因,TextView 的 setText() 方法给我带来了巨大的问题。这是我的代码的简化版本来说明我的意思:

package com.example.testapp;

import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        text = (TextView) findViewById(R.id.text1);  
        setContentView(R.layout.activity_main);
        text.setText("literally anything");
    }
}

这会导致崩溃,我不明白为什么.. 如果我在 onCreate 中创建 TextView 它工作得很好,但如果我在它之外创建它,它不会.. 为什么会这样?有“TextView text;”行还没被执行还是什么的?

谢谢!

【问题讨论】:

    标签: android string textview settext


    【解决方案1】:

    您需要在初始化 TextView 之前调用 setContentView(),以便您的 Activity 可以访问所有布局组件。

    setContentView(R.layout.activity_main);
    text = (TextView) findViewById(R.id.text1);  
    
    text.setText("literally anything");
    

    【讨论】:

      【解决方案2】:

      切换这两行

      text = (TextView) findViewById(R.id.text1);  
          setContentView(R.layout.activity_main);
      

      你需要先设置内容

      【讨论】:

        【解决方案3】:

        来自文档:

        onCreate(Bundle) 是您初始化活动的地方。最多 重要的是,在这里你通常会调用 setContentView(int) 定义您的 UI 的布局资源,并使用 findViewById(int) 来 在该 UI 中检索您需要与之交互的小部件 以编程方式。

        所以这意味着如果你要在布局中引用你的视图,你必须首先设置内容视图,然后调用 findViewById 方法来引用定义你的活动 UI 的布局资源的子视图

        【讨论】:

          【解决方案4】:
          text = (TextView) findViewById(R.id.text1);  
          setContentView(R.layout.activity_main);
          text.setText("literally anything");
          

          如果“字面上的任何东西”是一个变量(通常可能是这种情况),请确保它没有抛出 NullPointerException。我自己一直有这个问题。我将其固定为:

              text = (TextView) findViewById(R.id.text1);  
              setContentView(R.layout.activity_main);
              try {
                   text.setText("literally anything");
              } catch (NullPointerException e) {
                   // Do something
              }
          

          异常真的很有用,所以如果你是一个初级程序员,我建议你把异常处理放在你很快要学习的东西的清单上。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-11-11
            • 2013-01-27
            • 2011-07-16
            • 1970-01-01
            • 2021-06-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多