Fragment間転送データ(1)


Fragmentのメリットを理解する:1、activityを複数の再利用可能なコンポーネントに分離することができ、それぞれに独自のライフサイクルとUIがあります.2、ダイナミックで柔軟なUI設計を作成し、異なる画面サイズに適応できる.携帯電話からタブレット3まで、独立したモジュールがactivityにバインドされています.FragmentManagerでは、実行中に動的に削除、追加、交換することができます.4、Activity間の切り替えがスムーズではなく、軽量な切り替え(activityの作成よりリソース消費量が少ない)を解決する.5.多重化可能なモジュール化UIを実現するための良好なコンポーネントである.6、startActivity ForResultから返信結果を受信できますが、Viewができない欠点:1、複数のfragmentのイベント転送2、fragment間の通信1、複数のfragmentのイベント転送透過を解決しますか?その原因を究明します:Fragmentの本質は1つのViewレイアウトの管理器で、Fragment attachがActivityに着く時、実はFragment#onCreateView()の返したViewを取って、(もしreplaceを使うならば)FragmentTransaction#replaceの中で指定したViewを取り替えて、あるいは(もしaddならば)FragmentTransaction#add()の中で指定したview Groupの中で追加します.複数のFragmentを積層して表示する場合、通常はFrameLayoutを作成し、Fragment addをこのレイアウトに配置します.そのため、Activityのページレイアウトツリーは実際にはFrameLayoutにいくつかのViewが含まれています.したがって、上のFragmentの空白領域をクリックすると、イベントが食べられなければ、下に渡されます.  ソリューション:BaseFragmentの作成
public abstract class CJBaseFragment extends BaseFragment implements View.OnTouchListener {
   public SweetAlertDialog pDialog;
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       pDialog = new SweetAlertDialog(getActivity(), SweetAlertDialog.PROGRESS_TYPE);
       pDialog.getProgressHelper().setBarColor(Color.parseColor("#FF4081"));
       pDialog.setTitleText(" ...");
       pDialog.setCancelable(false);
   }
   @Override
   public void onViewCreated(View view, Bundle savedInstanceState) {
       //  , 
       view.setOnTouchListener(this);
   }
   @Override
   public boolean onTouch(View v, MotionEvent event) {
       return true;
   }
}

他のFragmentはCJBaseFragmentを継承することができ、ルートレイアウトはクリックイベントを食べさせ、イベントが伝達され続けることを防止し、上記の状況をもたらす.
二、fragment間の通信結合を理解するために. よく使われるいくつかの通信方式: 1、Handler 8195;4、eventBushttps://github.com/ycyangchun/FragmentCommunication
myBaseノート:https://github.com/ycyangchun/androidNode