社区
Android
帖子详情
Fragment中的Button响应事件处理
ferraborghini
2016-03-24 12:57:23
1、 Fragment实现了View.OnClickListener,重写了onClick方法,但是无响应。
2、在Fragment填充的布局文件中的Button设置onClick属性,在Fragment中不能实现。
3、但是在onCreateView中给Button添加监听事件,就可以做到相应。
...全文
574
4
打赏
收藏
Fragment中的Button响应事件处理
1、 Fragment实现了View.OnClickListener,重写了onClick方法,但是无响应。 2、在Fragment填充的布局文件中的Button设置onClick属性,在Fragment中不能实现。 3、但是在onCreateView中给Button添加监听事件,就可以做到相应。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
KingfarOu
2016-03-26
打赏
举报
回复
我印象中布局文件里的"onclick"属性只能指向活动里的方法,不能指向Fragment里的方法,所以如果想要响应点击事件,你必须在Fragment里面"findViewByID()"然后进行“setOnclickListener”
xiaomike618
2016-03-26
打赏
举报
回复
你在Fragment实现了onClickListener接口,你的Button也要设置监听器才行啊,比如:btn.setOnClickListener(this); this指的是Fragment实例对象。
xingzhong128
2016-03-24
打赏
举报
回复
这个是因为在xml中实现的android:onClick解析代码在View中: case R.styleable.View_onClick: if (context.isRestricted()) { throw new IllegalStateException("The android:onClick attribute cannot " + "be used within a restricted context"); } final String handlerName = a.getString(attr); if (handlerName != null) { setOnClickListener(new DeclaredOnClickListener(this, handlerName)); } break; 可以看到处理这个onClick属性时framework的默认实现是新建乐意个DeclaredOnClickListener的回调对象 private static class DeclaredOnClickListener implements OnClickListener { private final View mHostView; private final String mMethodName; private Method mMethod; public DeclaredOnClickListener(@NonNull View hostView, @NonNull String methodName) { mHostView = hostView; mMethodName = methodName; } @Override public void onClick(@NonNull View v) { if (mMethod == null) { mMethod = resolveMethod(mHostView.getContext(), mMethodName); } try {
mMethod.invoke(mHostView.getContext(), v);
} catch (IllegalAccessException e) { throw new IllegalStateException( "Could not execute non-public method for android:onClick", e); } catch (InvocationTargetException e) { throw new IllegalStateException( "Could not execute method for android:onClick", e); } } .......... // 其他代码 } 这个对象的onClick回调函数里使用反射实现的调用,反射的对象是getContext()也就是view所在的activity,所以如果你在actiivty的layout里定义了onclick属性的回调方法,并且在在activity里实现了方法,那么就可以响应。在fragment里定义的方法不会作为android:onClick属性的回调方法。
wei220000
2016-03-24
打赏
举报
回复
Fragment实现了View.OnClickListener,重写了onClick方法-----那你有给button绑定setonclicklistener吗? 在Fragment填充的布局文件中的Button设置onClick属性------那你有添加对应的click方法吗?
android问题:
Fragment
中
Button
点击事件无效
Fragment
中
Button
点击事件无效是一个常见但复杂的问题,可能由多种原因造成。通过仔细检查视图层级、优化
事件处理
逻辑、确保
Fragment
生命周期状态正确、避免UI线程阻塞以及检查触摸模式等步骤,我们可以有效地解决这一问题。此外,使用调试工具和合理的代码结构也是避免此类问题的重要手段。希望本文的内容能够帮助到遇到类似问题的开发者们。个人网站:www.rebootvip.com更多SEO优化内容 网站学习 google adsense资源免费分享下载:电子书,项目源码,项目实战。
[Android]解决
Fragment
无法使用android:onClick属性
有过MFC或者WinForm或者WPF经验的程序员一定对于
Button
的Click事件绑定情有独钟,然而当转移到Android平台开发的时候会发现,之前的种种便利全都不在,只有看着闹心的setOnClickListener()。 实际上Android里面也有同样的功能,在布局文件
中
同样可以给
Button
绑定Click时间的
响应
函数。如: android:id
[Android]
Fragment
无法使用android:onClick属性
来源:http://blog.163.com/lvan100@yeah/blog/static/68117214201502110012437/ 有过MFC或者WinForm或者WPF经验的程序员一定对于
Button
的Click事件绑定情有独钟,然而当转移到Android平台开发的时候会发现,之前的种种便利全都不在,只有看着闹心的setOnClickListener()。 实际上And
Android app偶发
Fragment
中
的
Button
点击事件无效
在进行app开发的过程
中
,在某个Tv平台开发app的过程
中
,会使用到Tab切换主页面的功能, 所以就需要用到
Fragment
来切换页面,同时在
Fragment
中
添加点击事件的时候,有时候无
响应
,接下来就分析下具体原因
Fragment
中
Button
的android:onClick 无法监听相应
在
Fragment
的布局文件
中
,
Button
控件下添加android:onClick监听; 1.
fragment
_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/to...
Android
80,488
社区成员
91,379
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章