所以我有一个单独的导航布局文件,我想在按钮点击时编辑它。但是当我这样做时,我得到错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
我用来定义它的代码是:
private TextView tvData;
private TextView gettingPrices;
private TextView navTime;
private TextView title;
navTime = (TextView) findViewById(R.id.refreshPricesNav);
tvData = (TextView) findViewById(R.id.test);
gettingPrices = (TextView) findViewById(R.id.gettingPrices);
title = (TextView) findViewById(R.id.navtitle);
,执行的代码在这里:
title.setText("Last Checked" + Datetime());
固定!已将navTime = (TextView) findViewById(R.id.refreshPricesNav);
添加到onPostExecute
答案 0 :(得分:2)
您的R.id.navtitle
TextView
在当前布局文件中不可用。
TextView
可用的方法TextView
static
,以便您也可以从其他类访问它。答案 1 :(得分:0)
您应该移动以下所有代码
navTime = (TextView) findViewById(R.id.refreshPricesNav);
tvData = (TextView) findViewById(R.id.test);
gettingPrices = (TextView) findViewById(R.id.gettingPrices);
title = (TextView) findViewById(R.id.navtitle);
该活动的到onCreate
方法。不记得在粘贴上面的代码之前设置视图。您应该将内容视图设置为
setContentView(R.layout.filename);
根据您的布局名称替换filename
。
答案 2 :(得分:0)
基本上你在调用这行代码时会发生什么
title = (TextView) findViewById(R.id.navtitle);
这里,方法findViewById()返回null,所以 title 指向no where,表示title没有对象引用,这是因为你在当前布局文件中也没有声明TextView navtitle 的ID,因此您必须在当前布局中声明此内容,或者如果要在其他布局中声明,则可以使用包含http://developer.android.com/training/improving-layouts/reusing-layouts.html标记。