android 4.4 添加按钮监听异常问题解决办法
2014-06-01 19:57
525 查看
以前在android 2.3中开发过简单的app,好久没碰android了,最近下载了android 4.4的开发sdk,想编写个简单的例子,编写流程还是按照以前的样式写,结果,发现明明以前正确的代码,现在却不可用了。如在fragment_main.xml中添加如下内容:
在MainActivity.java中的onCreate方法中添加如下内容:
结果运行这个程序,就是报错。按照android2.3 的方式,这个应该是没有问题的。后来在网上搜索关于Fragment的相关内容,发现android最新版本中发生了变化,回顾之前的,我的Button按钮定义在了fragment_main.xml中。而我确在Activity_main的布局中通过findViewById去获取fragment_main.xml中定义的控件,这样就导致了获取的Button控件为空指针,那么后面的设置监听就肯定是异常了。所以,对于使用了fragment布局的工程,需要按照另一种方式去编写程序。
讲上面的onCreate中刚才添加的Button相关代码删除,放到public static class PlaceholderFragment extends Fragment内部类中。如下面所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.hi.MainActivity$PlaceholderFragment" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn1" android:text="@string/btn1"/> </RelativeLayout>在strings.xml中添加如下内容:
<string name="btn1">提交</string>
在MainActivity.java中的onCreate方法中添加如下内容:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } Button btn = (Button)findViewById(R.id.btn1); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Log.v("Click","click button"); } }); }
结果运行这个程序,就是报错。按照android2.3 的方式,这个应该是没有问题的。后来在网上搜索关于Fragment的相关内容,发现android最新版本中发生了变化,回顾之前的,我的Button按钮定义在了fragment_main.xml中。而我确在Activity_main的布局中通过findViewById去获取fragment_main.xml中定义的控件,这样就导致了获取的Button控件为空指针,那么后面的设置监听就肯定是异常了。所以,对于使用了fragment布局的工程,需要按照另一种方式去编写程序。
讲上面的onCreate中刚才添加的Button相关代码删除,放到public static class PlaceholderFragment extends Fragment内部类中。如下面所示:
public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); Button btn1 = (Button)rootView.findViewById(R.id.btn1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Log.v("Tag","hello"); } }); return rootView; } }这样再次编译,就成功执行了。
相关文章推荐
- Android中ListView的item按钮监听错乱问题解决办法 推荐
- 关于Android中多线程中异常捕获出现的问题和解决办法
- Android Eclipse工程开发中的常见调试问题(二)android.os.NetworkOnMainThreadException 异常的解决办法
- Android问题分享:DownloadManager基本用法及发生java.lang.SecurityException异常的解决办法
- android中处理多按钮怎么监听解决办法
- 【游戏开发备注之一】关于Cocos2dx_v1.x版本iphone与Android运行出现图片白块、添加GameCenter报错问题及编译Android闪退的解决办法&&CCLOG与CClog的区别
- Android 控制软键盘显示、隐藏,并且添加软键盘的状态监听的终极解决办法
- 关于Android中一些异常问题的解决办法
- Android中两个APP间跳转导致的异常问题及解决办法
- bootstrap下modal模态框中webuploader控件按钮异常(无法点击)问题解决办法【转】
- ionic开发——百度地图InfoWindow信息窗口上添加按钮,无法触发点击事件问题解决办法
- eclipse平台 android项目前显示红色叉号 android level-19 4.4平台导入项目 问题解决办法
- android ListView在使用中碰得一些问题的解决办法
- Android中使用cmwap接入点访问互联网的问题及解决办法
- 关于android开发遇到的一些问题的解决办法---间断的更新
- Android手机常见问题以及解决办法[非开发]
- 配置android环境遇到的问题及解决办法
- Android中使用cmwap接入点访问互联网的问题及解决办法
- Android2.2+Eclipse windows xp环境配置,加部分问题解决办法(图文)
- 在做一个android文本阅览器时遇到的问题及解决办法