我在一个小应用程序的最后几天工作,但从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设置文本时。但是为什么他不使用另一种使用相同变量的方法呢?
问题已解决 - 但不知道如何...... 问题只存在于最后一种方法中。其他所有作品都很完美。
答案 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(名称);
返回视图;