【回调方法】安卓开发之Fragment数据传输到Activity+实例分析

系列文章:安卓开发之Activity传输数据到Fragmen+实例分析

上一个文章讲了如何从Activity传输数据到Fragment,但是Fragment见到Activity总不能空着手吧。
这里简要介绍如何从Fragment传输数据到Activity。

:步骤简介

1.编写接口在fragment中

private OnButtonClickListener mOnButtonClickListener;
//设置接口方法:
    //定义接口
    public interface OnButtonClickListener {
        void onClick(String title);//这里title是传递给activity的数据
    }
 

2.在fragment的onAttach方法中

super.onAttach(context);
        mOnButtonClickListener =(OnButtonClickListener) getActivity();//获取实现接口的activity

3.在fragment的oncreateView中的button点击事件:

button.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               if (mOnButtonClickListener!=null){//不为空的时候,就会执行回调
                   mButton="ggzx";//将ggzx回传
                   mOnButtonClickListener.onClick(mButton);
               }
           }
       });

4.实现onclick方法

    @Override
    public void onClick(String title) {
        setTitle(title);
        Log.e(TAG, "activity onClick: ");
    }

:实战分析

场景说明:首先activity中顶层布局是限制布局,作为fragment的容器,activity启动时,动态加载fragment,当点击fragment的button时候,会将一个字符串回调给主活动,主活动的实现的接口中onclick方法接收到数据,将Title换成一个字符。

代码:

public class BlankFragment extends Fragment {
    Button button;
    String mButton;
    String TAG="ggzx";
    private OnButtonClickListener mOnButtonClickListener;
    public static BlankFragment newInstance(String Button){
        BlankFragment blankFragment=new BlankFragment();
        Bundle bundle=new Bundle();
        bundle.putString("bundle_Button",Button);
        blankFragment.setArguments(bundle);
        return blankFragment;
    }
    @Override
    public void onAttach(@NonNull Context context) {
        super.onAttach(context);
        //获取实现接口的activity
        mOnButtonClickListener =(OnButtonClickListener) getActivity();
    }
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_blank,container,false);
        button=view.findViewById(R.id.button);
        Log.e(TAG, "Fragment onCreateView: ");
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mOnButtonClickListener!=null){//不为空的时候,就会执行回调
                    mButton="ggzx";//将ggzx回传
                    mOnButtonClickListener.onClick(mButton);
                }
            }
        });
        return view;
    }
    //定义接口
    public interface OnButtonClickListener {
        void onClick(String title);
    }
}

MainActivity.java

public class MainActivity extends AppCompatActivity implements BlankFragment.OnButtonClickListener {
    Button button2;
    String TAG="ggzx";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.e(TAG, " activity onCreate: ");

        BlankFragment blankFragment=BlankFragment.newInstance("ggzx");
        getSupportFragmentManager()
                .beginTransaction()
                .add(R.id.Constrain_main_container,blankFragment)
                .commit();

    }

    @Override
    public void onClick(String title) {
        setTitle(title);
        Log.e(TAG, "activity onClick: ");
    }
}
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渣渣高不会写Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值