Android:文本视图中的空指针异常

时间:2011-04-12 08:42:00

标签: java android

这是我面对异常的代码

public class SHOSuper extends Activity{

String officerName;
String arr[];
String[] offN;
public void onCreate(Bundle savedInstanceState) {
    try{
        super.onCreate(savedInstanceState);
        final TextView tv;
        tv=(TextView)findViewById(R.id.txt1);
        System.out.println("I AM NEW ACTIVITY");
        arr=Receiver.split(Receiver.orignal, ","); 
        String value1= arr[1];
        System.out.println("Array index " + value1);
        String value2=arr[2];
        System.out.println("Array 2nd index " + value2);
        tv.setText(value1 + " At " + value2);
        officerName= arr[5];
        offN =new String[officerName.length()];
        offN=Receiver.split(officerName, "_");
    }
    catch(Exception e){
        e.printStackTrace();
    }

setContentView(R.layout.main);
  }
}

在线tv.setText(value1 + " At " + value2);我面对Null指针Exception就像这样

**04-12 13:25:18.105: WARN/System.err(527): java.lang.NullPointerException
04-12 13:25:18.265: WARN/System.err(527):     at com.sho.SHOSuper.onCreate(SHOSuper.java:24)**
你能帮帮我吗?

4 个答案:

答案 0 :(得分:7)

findViewById()在您当前的contentView中找到该视图,而不是xml中的随机ID。

所以当你这样做时:

tv=(TextView)findViewById(R.id.txt1);

即使您的layout.main中有ID,也无法找到该ID:布局尚未设置。在尝试查找任何视图之前,请先致电setContentView(R.layout.main);

(您还可以使用inflater获取“随机”视图,然后将其添加到另一个视图中,但这似乎不是您要查找的内容)

答案 1 :(得分:2)

在执行setContentView(R.layout.main);

之前移动tv=(TextView)findViewById(R.id.txt1);

答案 2 :(得分:1)

调用此函数

setContentView(R.layout.main)

之前打电话

tv=(TextView)findViewById(R.id.txt1);

因为findViewById()在setContentView()

设置的视图层次结构中搜索

答案 3 :(得分:0)

看来

tv=(TextView)findViewById(R.id.txt1);

返回null