从其它界面退回到先前界面的时候刷新先前界面的方法

本文探讨了在Android开发中,FragmentA与FragmentB之间的数据交互与状态同步问题。通过实例展示如何使用回调机制实现FragmentB删除图片后,FragmentA列表的实时刷新,避免了直接调用onResume()方法的局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在写项目的时候,遇到个需求,Fragment A显示图片列表,单击某张图片以后,跳转到Fragment B,显示被点击图片的大图。在Fragment B界面有一个删除图片的选项。删除图片以后,回到A界面,A界面刷新。

一开始我想的是在Fragment A的代码里重写onResume(),在这个函数中写列表刷新的业务。但是我试了一下,发现从FragmentStack把Fragment B出栈以后并不会执行Fragment A的onResume()方法。

当然也可以把recycleView设置成为静态的,但是我没有选择这个方法。

最后我还是用回调解决了这个问题。

大致代码:

//fragment B
//把Fragment B设置成单例创建.
private static FragemntB fragB = new FragmentB();
private onRefreshListener listener;

public static FragmentB newInstance(){
	return fragB;
}

//写接口
public interfabe onRefreshListener(){
	void refresh();
}

public void setOnRefreshListener(onRefreshListener listener){
	this.listener = listener;
}

//在dialog点击确定以后
public void showDeleteDialog(){
	AlertDialog.Builder builder = new AlertDialog.Builder();
	builder.setMessage("确定要删除吗?");
	builder.setPositiveButton("确定",new DialogInterface.OnClickListener(){
		@Override
		public void onClick(View view){
			getActivity.onBackPressed();
			//回调
			if(listener!=null){
				listener.refresh();
			}
		}
	});
}

A板块

/*
 *Fragment A,利用acticity获取到FragmentB的对象
 *保证获取到的fragmentB和跳转的fragmentB是同一个对象
 */
 fragB.setOnRefreshListener(new onRefreshListener(){
 	public void refresh(){
 		//列表刷新的业务
 	}
 });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值