我不能在另一个布局文件上setText()

时间:2015-12-29 04:39:16

标签: java android nullpointerexception textview

所以我有一个单独的导航布局文件,我想在按钮点击时编辑它。但是当我这样做时,我得到错误:

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

3 个答案:

答案 0 :(得分:2)

您的R.id.navtitle TextView在当前布局文件中不可用。

  1. 在课程中创建此TextView可用的方法
  2. 制作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标记。