(1)我先用new TestView,设置要显示的文本,但并未在main.xml中声明
先运行一下,一切正常,在程序中显示出文本(2)但是当我加入button的监听程序后,到模拟器上运行时,一打开程序,程序就立即停止
源代码如下:package com.demo.android.avtivitytest;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class ActivityTestActivity extends Activity {
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        TextView test = new TextView(this);
        test.setText("Avtivity 1");
        setContentView(test);
        
        Button btn = (Button)findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener(){
     public void onClick(View v){
     Intent intent = new Intent();
     intent.setClass(ActivityTestActivity.this, Report.class);
     startActivity(intent);
     ActivityTestActivity.this.finish();
     }
    });
        
    }
    
    
}eclipse报错,java.lang.NullPointerException
当我把未在main.xml中生命的testview注释掉后,程序正常运行请问这是为什么?
为什么第一次可以,第二次加入button的监听程序后就无法运行呢?

解决方案 »

  1.   

    很显然
    第二次setContentView(test) 就把前面的R.layout.main给取代了,
    再调用findViewById(R.id.button)就是在 test这个TextView中找了,当然找不到这个button了你可以这样:TextView test = new TextView(this);
    test.setText("Avtivity 1");
    addContentView(test, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
      

  2.   

    我的问题同上吧,运行正常,但是点击layout\main.xml,报出一个空指针异常,代码如下
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    SysApplication.getInstance().addActivity(this);
    setContentView(R.layout.arts);
      

  3.   

    我点击layout下的main.xml,也报个空指针。
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    SysApplication.getInstance().addActivity(this);
    setContentView(R.layout.arts);