博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中在fragment A里面点击button跳转到fragment B实现方法
阅读量:4122 次
发布时间:2019-05-25

本文共 2229 字,大约阅读时间需要 7 分钟。

  • 方法一:直接getActivity,使用activity的fragmenttransation的replace方法替换

    假设

    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按下调用回调

    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中设置回调即可

    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();  			}  		});  	}  }

转载地址:http://cvvpi.baihongyu.com/

你可能感兴趣的文章
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2017——新的开始,加油!
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
Linux设备模型(总线、设备、驱动程序和类)之四:class_register
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>