Android SDK改版后,在布局文件夹layout里面同时生成了两个布局文件activity_main.xml和fragment_main.xml,以往写在activity_main.xml的代码被转移到了fragment_main.xml里面,这里也出现了一个问题,以往教学视频和书籍中的控件响应方法都不管用了,原本写在onCreat方法下的控件响应代码在执行程序的时候会报出空指针错误(NullPointerException).本人经过查阅了大量资料后,解决了这一问题.下面,就以响应Button控件为例子来讲解如何解决这个空指针错误问题.例子:在界面中有两个控件,一个是TextView控件(初始值为0),另一个是Button控件(初始值为button),当点击button按钮时,TextView中的数字+1,效果如下图如何响应在fragment_main.xml中的控件如何响应在fragment_main.xml中的控件代码如下:MainActivity.java类中..........省略部分代码............public static class PlaceholderFragment extends Fragment {TextView textView = null; //创建TextView对象Button button = null; //创建Button对象int count = 0; //创建计数器countpublic PlaceholderFragment() {}public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {//rootView为fragment_main中所有控件集合View rootView = inflater.inflate(R.layout.fragment_main, container,false); //获取TextView控件textView = (TextView)rootView.findViewById(R.id.textView);//获取Button控件button = (Button) rootView.findViewById(R.id.button);//Button按钮的OnClick方法button.setOnClickListener(new ButtonListener());return rootView;}//创建监听器class ButtonListener implements OnClickListener{public void onClick(View v){count++;textView.setText(count+"");}}}fragment_main.xml文档中..........省略部分代码............ android:id = "@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="0" /> android:id ="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text = "button" />--------------------------------------------------------------------------------------------------从上面的代码可以看出,控件获取及响应的方法被放到了 PlaceholderFragment 类中的onCreateView方法中,监听器也同时被放置到了PlaceholderFragment 类中. 经过这次改版,控件布局代码被转移到了fragment_main.xml中,同时,ADT也为程序员同时产生了PlaceholderFragment 类用来获取和响应控件,所以,在使用改版后的ADT的同时,不要忘记了控件响应的位置也发生了变化,我在这里也只是起到了抛砖引玉的作用,欢迎大家与我共同来探讨这个问题.
如何给fragment中的组件添加监听器
最新推荐文章于 2024-04-17 22:45:08 发布