Fragment总结(二)

本文详细介绍了Android开发中Fragment与Activity及Fragment之间的通信方式,包括直接调用方法和通过回调接口实现的通信。

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

Fragment的含义,作用,生命周期,使用方法,Fragment管理请查看上篇文章Fragment总结(一)。这篇文章主要是介绍Activity和Fragment之间通信,Fragment和Fragment之间通信。

Activity和Fragment之间通信

1.Activity和Fragment互相调用各自的方法实现交互:
(1)在Activity中调用Fragment的方法:
通过getActivity()获取所附属的Activity,可以调用其相关方法。

DynamicAddActivity activity = (DynamicAddActivity) getActivity();
activity.showToast();

(2)在Fragment中调用Activity的方法:
通过FragmentManager获取相对应的Fragment,可以调用其相关方法。

if(oneFragment == null){
  oneFragment = new OneFragment();
  transaction.add(R.id.container, oneFragment);
} else {
  transaction.show(oneFragment);
}
oneFragment.showToast(DynamicAddActivity.this);

2.通过回调接口实现通信:
在Fragment中声明一些回调接口,当Fragment调用onAttach时,将这些回调接口实例化,Fragment可以调用各个activity的成员函数了,Activity必须implements这些接口,实现Activity和Fragment之间通信。
下面是一个非常简单的例子,以此来进行说明:
Fragment中定义一个接口实例化,点击按钮时调用:

@Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.one_fragment, null);
        one_fragment_btn = (Button)view.findViewById(R.id.one_fragment_btn);
        one_fragment_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {//点击按钮时调用回调方法
                Boolean flag = listener.callback("test");//调用接口
                if(flag){
                    Toast.makeText(getActivity(), "成功", Toast.LENGTH_LONG).show();
                }
            }
        });
        return view;
    }

    //回调接口
    public interface CallBackListener{
        boolean callback(String text);
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try{
            listener = (CallBackListener) context;//实例化接口
        } catch (ClassCastException e){

        }
    }

Activity中实现接口:

//实现回调接口
 @Override
    public boolean callback(String text) {
        if("test".equals(text)){
            return true;
        }
        return false;
    }

Fragment和Fragment之间通信

Fragment之间不能直接通信,需要通过Activity来实现Fragment之间通信,不再举例进行说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值