zoukankan      html  css  js  c++  java
  • fragment之间的信息交互——onActivityResult()不经过Activity

    1.本文讲述如何fragment与fragment之间互传信息,不用使用Activity的onActivityResult()方法

    核心思想:FirstFragment获取到SecondFragment的对象,然后调用SecondFragment的onActivityResult()方法

    CrimeFragment.java

    private static final int REQUEST_DATE = 0;
    private static final String DIALOG_NAME = "dateDialog";
    private Crime mCrime;
    
    mDateBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    FragmentManager fm = getActivity().getSupportFragmentManager();
                    DateDialog dateDialog = DateDialog.newInstance(mCrime.getDate());
                 dateDialog.setTargetFragment(CrimeFragment.this,REQUEST_DATE);
    //最重要的方法:获取Fragment对象
                    dateDialog.show(fm,DIALOG_NAME);
                }
            });
    //重写onActivityResult()方法
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_DATE){ Date date = (Date)data.getSerializableExtra(EXTRA_NEW_DATE); mDateBtn.setText(date.toString()); mCrime.setDate(date); } }

    DialogFragment.java

    new AlertDialog.Builder(getActivity())
                    .setView(v)
                    .setTitle(R.string.setDate)
                    .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            if (getTargetFragment() == null)
                                return;
                            Intent intent = new Intent();
                            intent.putExtra(CrimeFragment.EXTRA_NEW_DATE,mDate);
                            getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK,intent);
    //getTargetFragment()获取对象并调用onActivityResult方法
                        }
                    })
                    .create();
  • 相关阅读:
    解决端口被占用问题
    python实现操作mysql数据库
    python实现读取并处理excel单元格中的数据
    python实现读取配置文件
    python实现读取excel
    接口测试简介
    python实现获取文件夹中的最新文件
    Redis入门
    mysql高可用研究(二) 主从+MHA+Atlas
    mysql高可用研究(一) 主从+MHA架构
  • 原文地址:https://www.cnblogs.com/rookiechen/p/5231716.html
Copyright © 2011-2022 走看看