Android Fragment 使用中的一些心得

一、切换方法(两种)
R.id.waitApproval_frameLayout 是一个 FrameLayout布局

第一种:
1.1、定义一个方法

    public void replaceFragment(Fragment fragment) {
        FragmentManager fragmentManager = 
        Objects.requireNonNull(getActivity()).getSupportFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.waitApproval_frameLayout, fragment);
        transaction.addToBackStack(null);
        transaction.commit();
    }

1.2、使用

  replaceFragment(new WaitApprovalTypeFragment());

第二种:

             getFragmentManager().beginTransaction()
                      .addToBackStack("next")
                     .replace(R.id.waitApproval_frameLayout, new WaitApprovalTypeFragment())
                     .commit();

二、调用其他Fragment的方法
参考地址:https://blog.csdn.net/qq_35506618/article/details/80733946

Listlist=(List)NewsFragment.this.getFragmentManager().getFragments();
for(Fragment f:list){
    if(f!=null&&f instanceof ShouYeMainFragment){
        ((ShouYeMainFragment) f).changView();
        break;
    }
}

Listlist=(List)当前碎片.this.getFragmentManager().getFragments();
for(Fragment f:list){
    if(f!=null&&f instanceof 父容器Fragment){
        ((父容器Fragment) f).changView(); //调用父容器的公用方法
        break;
    }
}

三、fragment 处理回退事件

回调OnResume方法

   @Override
    public void onResume() {
        super.onResume();
        getView().setFocusableInTouchMode(true);
        getView().requestFocus();
        getView().setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View view, int i, KeyEvent keyEvent) {
                if (keyEvent.getAction() == KeyEvent.ACTION_DOWN && i == KeyEvent.KEYCODE_BACK) {
//在这里处理业务逻辑
                    getActivity().onBackPressed();

                    return true;
                }
                return false;
            }
        });
    }

你可能感兴趣的:(Android Fragment 使用中的一些心得)