好像android就是这么做的,内存不够时就释放一些weak的变量,所以你要自己在自己的应用里面做好这个处理,比如oncreate和onresume的时候都判断一下,如果是空就再分配

解决方案 »

  1.   

    +1    oncreate的时候不需要判断,直接得到了
    因为如果进行oncreate的话,那这个Activity都已经不存在了
      

  2.   

    贴出log信息看一下是哪个对象为空,然后在相应的代码前加非空判断,差不多就可以了吧
      

  3.   

    你们的回答都挺有道理的,在此先谢谢各位了。
    我每次都会执行onCreate方法(意思是在onCreate中就出异常了),获取控件的引用是通过findViewById方法,只是获取不到,为什么呢?
    xml中应经+id了,编译也通过了,但是在运行的时候就报这个控件为空的异常了,难道是因为内存不够,直接没给分配上内存?
      

  4.   

    你是在setContentView(R.layout.main)之前还是之后获取控件的,如果是在之前,会出现这样的问题
      

  5.   

    当然是之后了
    简单的说就是先findViewById获取引用,然后用,出错,说null。
    例如:
    setContentView(R.layout.main)
    Button button = (Button)this.findViewById(R.id.buttonId)
    button.setText()等等
    出错
    这行button.setText()报错,说空。是button空。
      

  6.   

    那是略写的button.setText("aaaaaaaaaaaaaaaaaaaaa")
      

  7.   

    可能是你的xml有问题 看下R.java里面有没这个ID
      

  8.   

    不会吧,这样写应该没什么问题的啊。你是不是在Button button = (Button)this.findViewById(R.id.buttonId)之后又定义了一个Button,导致用后面的button时报空指针错误,如果不是的话只有再查看一下R文件,看看是不是有这个Id。----个人之见。
      

  9.   

    肯定ID没找到吧,进R.java搜一下看看
      

  10.   

    id有啊,我看了,再说要是没有的话,也肯定编译不通过,整个Activity就这一个Button。
      

  11.   

     你的这个button跟你的这个布局是分开的,意思就是你的main.xml里没有button,但这个button在其他布局里面。不赋值会正常显示,所以你赋值的时候会出现空指针异常
      

  12.   

    基本上就是你说的这个错误,非常感谢你。
    我用LayoutInflater加载了一个布局,而我的Button就是在这个布局中的,而不是我的Activity中加载的那个布局。
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout_inflater_demo);
            
            LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       view = inflater.inflate(R.layout.defined_dialog, null);
       testButton = (Button) view.findViewById(R.id.definedDialog_test_button_id);
       testButton.setOnClickListener(this);
        }
    之前将testButton = (Button) view.findViewById(R.id.definedDialog_test_button_id);
    写成testButton = (Button) this.findViewById(R.id.definedDialog_test_button_id);所以出错了。
      

  13.   

    Jingmy 解决我的问题了,我的问题就是这样,在setOnClock的时候报空指针,原来我是在setContentView之前在操作控件,太感谢了,新手规则不知道~~~~O(∩_∩)O哈哈~,好开心!!