CrimeFragment

3565 ワード

(以前csdnと書いてあったものを運んでくる)
  • fragmentはコントローラであり、activityは、通常、スクリーン全体または一部のユーザーインタフェースを管理するタスクを完了させることができます.ユーザインタフェースを管理するfragmentはUI fragmentとも呼ばれ、ユーザインタフェースを管理するためにfragmentインスタンスをactivityで管理し、activityはFragmentManagerでfragment管理を管理する:activtyはそのビューレベルでfragmentを配置するビューを提供する.fragment自体は、画面に表示する機能
  • を有しない.
  • activityのタスク:1.fragmentビューの位置2を配置する.管理fragmentライフサイクル
  • 管理の2つの方式:1.レイアウトにfragment(?)を追加するfragmentとそのビューをactivityのビューにバインドし、fragmentを変更するにはactivityのビューを変更する必要があり、再びonCreate activity 2を変更する必要があります.Activityにfragmentを追加実行時にfragmentを制御できる唯一の方法
  • FragmentManagerクラスはfragmentを管理し、それらのビューをactivityのビュー階層に追加し、fragmentを呼び出すライフサイクルメソッド管理も担当します.1,fragmentキュー2,fragmentトランザクションロールバックスタックactivityが破棄されると、そのFragmentManagerはfragmentキューを保存し、activityが再構築されると、新しいFragmentManagerはまず保存されたfragmentキューを取得します.次にfragmentキュー
  • を再構築する
    FragmentActivity
    public class CrimeActivity extends FragmentActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_crime);
    
            FragmentManager fragmentManager=getSupportFragmentManager();
            Fragment fragment=fragmentManager.findFragmentById(R.id.fragment_container);
    
            if(fragment==null){
                fragment=new CrimeFragment();
                fragmentManager.beginTransaction().add(R.id.fragment_container,fragment).commit();
            }
        }
    }
    

    if文のこのコードはfragmentトランザクションfragmentトランザクションを作成してコミットし、fragmentキューのfragmentを追加、削除、追加、分離、または置換するために使用されます.FragmentManagerはfragmentトランザクションのロールバックスタックを管理しています.まずgetSupportFragmentManagerメソッドを使用して現在のactivityを取得するFragmentManager fragmentがnullの場合、新しいCrimeFragmentを作成します.beginTransactionメソッドを使用してfragmentキュー(FragmentTransaction)を取得し、キューにfragmentを追加します.追加はidパラメータを入力します.1つはFragmentManagerにこのfragmentがビューの位置にあるべきであることを伝えるためです.2つ目は、Fragmentキュー内の一意の識別子として(FragmentManagerが管理するfragmentをidで取得する)
    Fragment fragment=fragmentManager.findFragmentById(R.id.fragment_container);
    

    最終コミットトランザクション
    Fragment
    public class CrimeFragment extends Fragment {
        private Crime mCrime;
        private EditText mTitleField;
    
       // FragmentActivity 
        @Override
        // fragment 
        public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            mCrime=new Crime();
        }
    
        @Override
        // fragment , activity onCreate
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState)
        {
            View v=inflater.inflate(R.layout.fragment_crime,container,false);
    // ( ), 
            mTitleField=(EditText)v.findViewById(R.id.crime_title);
            mTitleField.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                      mCrime.setTitle(s.toString());
                }
    
                @Override
                public void afterTextChanged(Editable s) {
    
                }
            });
            return v;
        }
    }
    
  • fragmentを追加すると、onAttach,onCreate,onCreateViewがactivity実行状態追加を呼び出されると、activityと同期するための方法が迅速に実行されます.
  • androidシステムに内蔵されたfragmentよりも開発者ライブラリの使用を推奨します.これにより、新しい特性を使用する場合は、サポートライブラリをアップグレードするだけで2つの重要なサポートライブラリクラスが可能になります.Fragment Fragment Activityはfragmentを使用する前提はactivityがfragmentを管理する方法を知っていることです.Fragment Activityはfragment
  • を管理することができます.