当前位置: 代码迷 >> Android >> 新手空指针异常
  详细解决方案

新手空指针异常

热度:85   发布时间:2016-04-28 06:30:20.0
新手求教:空指针错误
布局中有个按钮id是btnOpen

在MainActivity.java文件中有以下语句

                Button btnOpen=(Button)findViewById(R.id.btnOpen);
btnOpen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DisplayToast("You have Clicked the Open button");
}
});

运行时,logcat中信息似乎是报setOnClickListener这句空指针错误,这几个语句有问题吗?我是完全照教材敲的?请高手指教

------解决方案--------------------
这个问题很简单Fragment需要一个布局,Activity也需要一个布局,在新版的ADT中给你生成的不只是Activity,还有Fragment因此会有两个布局。Fragment这个东西跟Activity有点像他有他自己的生命周期跟布局,这玩意在平板开发中用得比较多,在现在手机开发中用得也比较多。
------解决方案--------------------
引用:
Quote: 引用:

现在你有两个布局文件:
activity_main.xml 和 fragment_main.xml.

在MainActivity.java中执行Button btnOpen=(Button)findViewById(R.id.btnOpen) 这肯定btnOpen为null,因为此时findViewById是在activity_main.xml文件中找的,当然不存在。

应改为:
在PlaceholderFragment.java文件的onCreateView() 方法中 执行如下:
Button btnOpen=(Button)rootView.findViewById(R.id.btnOpen);
btnOpen.setOnClickListener(new View.OnClickListener(){
      ....
});

这样做findViewById是在rootView中找的。


哦,原来如此,谢谢
activity_main.xml 和 fragment_main.xml这两个布局文件主要区别是什么呢?我设计布局在哪个文件里比较好呢,还是说随便哪个都可以


这。。。
你就没弄明白fragment怎么用、干什么用,百度下fragment用法吧!
------解决方案--------------------
引用:
Quote: 引用:

现在你有两个布局文件:
activity_main.xml 和 fragment_main.xml.

在MainActivity.java中执行Button btnOpen=(Button)findViewById(R.id.btnOpen) 这肯定btnOpen为null,因为此时findViewById是在activity_main.xml文件中找的,当然不存在。

应改为:
在PlaceholderFragment.java文件的onCreateView() 方法中 执行如下:
Button btnOpen=(Button)rootView.findViewById(R.id.btnOpen);
btnOpen.setOnClickListener(new View.OnClickListener(){
      ....
});

这样做findViewById是在rootView中找的。


找了下,src目录下只有MainActivity.java文件,没有PlaceholderFragment.java,请问这文件在哪个目录下呢

com.example.study.MainActivity.java中的静态内部类PlaceholderFragment
  相关解决方案