如果原始资源文件夹不为空,setContentView()将返回null

时间:2011-10-04 13:25:20

标签: android android-layout

我有一个主要活动开始儿童活动。在孩子onCreate()中,我打电话给:

setContentView(R.layout.console);
TextView tv = (TextView)findViewById(R.id.console);

只要我的原始资源文件夹为空,就可以找到它。当我将任何文件放入其中时,findViewById()会返回null。我无法找出原始文件夹中的文件与缺少查找布局资源之间存在干扰的原因。

2 个答案:

答案 0 :(得分:0)

我尝试使用NetBeans和Eclipse构建,并且R.java包含所有必需的条目,并且没有ID冲突。如果我在原始文件夹中添加文件,则会在R.java中正确添加文件ID,而其他任何内容都不会更改。

在LogCat中,一旦我尝试使用TextView电视,我就会得到一个空指针异常。当我在声明/初始化之后立即将tv的值写入日志时,tv是空引用。

@Override
protected void onCreate(Bundle savedInstanceState)
{
  Log.i("Calling onCreate()");
  super.onCreate(savedInstanceState);
  setContentView(R.layout.console);
  TextView tv = (TextView)findViewById(R.id.console);
  Log.i("tv = " + tv);
}

这似乎是个问题,因为活动是由MAIN活动用

推出的
Intent intent = new Intent(getContext(), ConsoleActivity.class);
int requestCode = Activity.RESULT_OK;
startActivityForResult(intent, requestCode);

控制台活动的布局文件console.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

   <ScrollView
    android:id="@+id/scroller"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

        <TextView
         android:id="@+id/console"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"/>
    </ScrollView>

   </LinearLayout>

</LinearLayout>

答案 1 :(得分:0)

我找到了解决方法。代码是库的一部分。在库项目中,我没有包含原始资源目录,因为我不使用库中的原始资源。现在我在库项目中创建了一个包含一些(虚拟)文件的原始目录,并且...... 当在apps项目中添加带有文件的原始目录时,空指针错误就会消失了。

非常感谢你的帮助,刺激了我。