将文本设置为TextView - NullPointerException

时间:2018-05-13 09:36:22

标签: android nullpointerexception textview

我在一个小应用程序的最后几天工作,但从2天后,我无法设置文本到我的textview。我知道通常必须以这种方式制作:

TextView textview1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textview1 = findViewById(R.id.tvid1);
    textview1.setText("blablabla");
}

在我的情况下,我的布局不直接是textview所在的主要布局。我使用默认的导航抽屉示例,他们是另一个称为主内容布局的布局。 我让程序在另一个java类中执行某些操作,该类返回一个必须在TextView中显示的String Value。但我可以从EditText-Field获取数据,它们也是相同的布局。

当我的应用程序必须设置文本时,这是错误:

  

java.lang.NullPointerException:尝试调用虚方法' void   android.widget.TextView.setText(java.lang.CharSequence中)'在null   对象参考

编辑 - 13.05.18 16:00:

当我将 TextView calc_price_output 放入 onCreate 方法并且textview设置文本时。但是为什么他不使用另一种使用相同变量的方法呢?

问题已解决 - 但不知道如何...... 问题只存在于最后一种方法中。其他所有作品都很完美。

3 个答案:

答案 0 :(得分:0)

你没有对你的对象calc_price_output进行类型转换来保存textview引用的引用。

就像这样对它进行类型转换: -

calc_price_output = (TextView)findViewById(R.id.Tvid);

编辑:我猜你正在onCreate()或者要显示此更改的任何事件中正确调用你的函数displayOutput()。

答案 1 :(得分:0)

此处的答案表明您必须在setText中致电onCreate。这不是真的,你没必要,你可以在其他地方做,规则是你在findViewById之后做。

您的Main.java夸大activity_main布局,但您显示的按钮位于act_calculate.xml布局文件中。因此findViewById返回null,将您的按钮移至activity_main或使用include将其包含在主布局中。

答案 2 :(得分:-1)

您应该在Content XML文件而不是Navigation抽屉中设置文本。就像这样。 e.g:

查看视图= inflater.inflate(R.layout.fragment_home,container,false);

txtname = view.findViewById(R.id.usersession);

txtname.setText(名称);

返回视图;