android中在fragment A里面点击button跳转到fragment B怎么实现?
发布日期:2021-11-12 07:57:01
浏览次数:27
分类:技术文章
本文共 2271 字,大约阅读时间需要 7 分钟。
原文地址:https://zhidao.baidu.com/question/1047010255887861859.html
方法一:直接getActivity,使用activity的fragmenttransation的replace方法替换
假设
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class OneFragment extends Fragment{ private Button btn; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag_one, null ); btn = (Button)view.findViewById(R.id.button); btn.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { FragmentManager fm = getActivity().getFragmentManager(); fm.beginTransaction() //替换为TwoFragment .replace(R.layout.fragment_container, new TwoFragment()) .commit(); } }); return super .onCreateView(inflater, container, savedInstanceState); } } |
但是这样做会使OneFragment和原activity的耦合度提高,fragment设计出来就是有重用的目的,所以不好,使用方法二
方法2:定义回调函数,当button按下调用回调
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | class OneFragment extends Fragment{ private Button btn; private OnButtonClick onButtonClick; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag_one, null ); btn = (Button)view.findViewById(R.id.button); btn.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { if (onButtonClick!= null ){ onButtonClick.onClick(btn); } } }); return super .onCreateView(inflater, container, savedInstanceState); } public OnButtonClick getOnButtonClick() { return onButtonClick; } public void setOnButtonClick(OnButtonClick onButtonClick) { this .onButtonClick = onButtonClick; } public interface OnButtonClick{ public void onClick(View view); } } |
这样只要在acitivty中设置回调即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class MainActivity extends Activity { private OneFragment oneFragment = new OneFragment(); @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); //。。。 //。。。省略代码 oneFragment.setOnButtonClick( new OnButtonClick() { @Override public void onClick(View view) { //切换到TwoFragment fm.beginTransaction() //替换为TwoFragment .replace(R.layout.fragment_container, new TwoFragment()) .commit(); } }); } } |
转载地址:https://blog.csdn.net/happy_love1990/article/details/67083285 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月23日 09时59分35秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
1002 写出这个数 (20 分)
2019-04-26
1010 一元多项式求导 (25 分)
2019-04-26
1013 数素数 (20 分)
2019-04-26
1026 程序运行时间 (15 分)
2019-04-26
以太坊智能合约开发-《精通以太坊智能合约开发》学习总结实践
2019-04-26
Parabolic SAR(抛物线转向指标)
2019-04-26
java 通用内存分页(List分页)
2019-04-26
什么是WebAuthn、FIDO 是什么?
2019-04-26
Hibernate JPA-原生查询返回BigIntegers而不是long
2019-04-26
Apollo-本地开发模式(不接入配置中心进行本地开发 env=Local)
2019-04-26
拜占庭容错共识(PBFT)
2019-04-26
预言机如何读取和验证数据?
2019-04-26
git- git checkout 创建新的分支、切换分支、切换到指定tag
2019-04-26
什么是非同质化代币(NFT)\ NFT有哪些应用?
2019-04-26
VRF是什么?
2019-04-26
Qt:01---Qt Creator与SDK的下载与安装
2019-04-26
【直播回顾】获取 iOS 用户,您还可以这么做
2019-04-27