Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何将数据从当前片段传递到以前的片段大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个片段A和B.我从片段A开始片段B.我需要在片段B关闭之前将数据从片段B传递到片段A.它就像startActivityForResult()的想法.

在片段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.

解决方法

@H_502_32@ •使用如下方法创建一个接口:

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 – 如何将数据从当前片段传递到以前的片段所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。