Activityベースクラスの詳細(5)-AppActivityのFragment機能のロード

4070 ワード

前言

AppActivityの簡単な使用については、以前から詳しく説明してきましたが、Activityベースクラスの詳細(1)—前言Activityベースクラスの詳細(2)—アーキテクチャの概要Activityベースクラスの詳細(3)—AppActivityインフラストラクチャのActivityベースクラスの詳細(4)—AppActivityベースクラスの簡単な使用(4)—AppActivityベースクラスの詳細(4)—AppActivityベースクラスの簡単な使用(2)—アーキテクチャの概要Activityベースクラスの詳細(3)—AppActivityベースクラスの詳細(4)—AppActivityベースクラスの詳細具体的にお話しします.
今日の知識点は次のとおりです.
  • AppActivityがfragmentをロードする際に主に関わるポイント
  • ActivityとFragmentは、戻りキー処理について説明
  • を用いる.
  • 注意すべき問題
  • 一.AppActivityがfragmentをロードする際の主なポイント

    Activity fragmentをロードする場合、主に2つの問題に関連します.
  • activityとfragmentのインタラクティブな伝達値
  • activityおよびfragmentは、戻りキー処理
  • に対して、
    ここでは、AppActivityの論理がfragmentの論理に含まれているため、 の使用に重点を置きます.

    二.ActivityとFragmentの戻りキー処理の使用説明

    には、動的な がロードされており、このActivtyについては、以下のようにFragmentを継承する必要がある.
    public class MainActivity extends AppActivity{
    
    }
    
    activityが戻りキーを処理する必要がない場合、AppActivityメソッドを書き換える必要はありません.このとき、MainActivityが戻りキーをクリックすると、システムが戻りキーに応答する方法が実行される.onActivityKeyDown(int keyCode, KeyEvent event)において戻りキーロジックの処理が必要である場合、MainActivityMainActivityメソッドを書き換え、戻り値をtrueに設定する必要がある.
    public class MainActivity extends AppFragActivity{
    
       //      
       //......
    
        @Override
        protected boolean onActivityKeyDown(int keyCode, KeyEvent event) {
            //   MianActivity        
            //......
    
            //    true,           
            return true;
        }
    }
    
    AppActivityでリターンキーロジックを処理すると、onActivityKeyDown(int keyCode, KeyEvent event)Fragmentインタフェースを実現する必要があり、以下のようにする.
    public class FragmentB extends Fragment implements OnFragmentBackListener {
    
    }
    

    その後、FragmentOnFragmentBackListenerFragmentを割り当て、onAttach(Context context)に傍受を設定し、Contextに傍受を解除し、onCreateViewの方法でonDestroyView()インタフェースの戻りキーを以下のように処理する.
    //Fragment  OnFragmentBackListener  
    public class FragmentB extends Fragment implements OnFragmentBackListener {
    
        //  Context
        private Context mContext;
        
        @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            // context  
            this.mContext = context;
        }
        
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            mLayoutView = inflater.inflate(R.layout.fragment_b, container, false);
    
            initView();
            initData();
            setListener();
            
            return mLayoutView;
        }
        
        private void initView() {
            
        }
    
        private void initData() {
            
        }
    
        private void setListener() {
            //     
            if (mContext instanceof MainActivity) {
                ((MainActivity) mContext).setOnFragmentBackListener(this);
            }
        }
        
        @Override
        public void onDestroyView() {
            super.onDestroyView();
            //       
            if (mContext instanceof MainActivity) {
                ((MainActivity) mContext).setOnFragmentBackListener(null);
            }
        }
        
        @Override
        public void onBackForward(int keyCode, KeyEvent event) {
            //fragment        
            //......
        }
       
    }
    
    

    三.注意すべき問題

  • onBackForward(int keyCode, KeyEvent event)Fragmentをロードする設計の目的は、AppActivityが通常のライフサイクルで実行されることです.frgmentからfragmentへのジャンプは、activityおよびFragmentではなく、add()からshow()の一連の方法であることを必ず確認してください.hide()およびshow()は、hide()のライフサイクルを歩まないため、戻りキー機能が反応しないか、または「奇妙」なFragment
  • を引き起こす可能性があります.
  • bugからActivityへの値伝達は、上述した戻りキー処理に関する論理を参照することができる.

  • OK、今日の内容はここまで紹介します.ありがとうございました.