在片段A中我称之为片段B:
FragmentB calendarDialog = new FragmentB(); calendarDialog.setTargetFragment(CurrentPanchangDialog.this,1); FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); transaction.setCustomAnimations(R.anim.enter_from_left,R.anim.exit_to_right,R.anim.enter_from_right,R.anim.exit_to_left); transaction.add(androID.R.ID.content,calendarDialog).addToBackStack(null).commit();
现在在片段B中我在关闭时调用这样的东西:
getTargetFragment().onActivityResult( getTargetRequestCode(),Activity.RESulT_OK,new Intent().putExtra("data","datafrom C") ); getActivity().getSupportFragmentManager().popBackStackImmediate();
现在在Base活动中,我将重写onActivityForResult():
@OverrIDe protected voID onActivityResult(int requestCode,int resultCode,Intent data) { Fragment pFragment = getSupportFragmentManager().findFragmentByID(R.ID.content); if (pFragment instanceof CurrentPanchangDialog) { if (pFragment != null) { pFragment.onActivityResult(requestCode,resultCode,data); } } super.onActivityResult(requestCode,data); }
我没有将数据从片段B返回到片段A.
解决方法 •使用如下方法创建一个接口:public interface FragmentCallback { voID onDataSent(String yourData);}
•在FragmentA中实现此接口并实现onDataSent()方法:
public class FragmentA implements FragmentCallback { @OverrIDe voID onDataSent(String yourData){ //Do something with your data }}
•在Fragment B中声明此接口变量并创建公共setter方法:
public class FragmentB {private FragmentCallback fragmentCallback; public voID setFragmentCallback(FragmentCallback callback) { this.fragmentCallback = callback; }}
•在某处使用FragmentA将其设置为FragmentB实例上的回调:
fragmentB.setFragmentCallback(this);
•从FragmentB到FragmentA的路径数据(如果要在FragmentB即将关闭时发送数据,您可以从片段的生命周期方法之一执行此 *** 作):
public class FragmentB { public voID onDestroy() { if(fragmentCallback != null){ fragmentCallback.onDataSent("Some data from FragmentB"); } super.onDestroy(); }}总结
以上是内存溢出为你收集整理的android – 如何将数据从当前片段传递到以前的片段全部内容,希望文章能够帮你解决android – 如何将数据从当前片段传递到以前的片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)