[アンドロイド] P7-1フラグメントの研究ノート

第7章UIフラグメントおよびフラグメント「ガイド第3版プログラミングAndroidの権威」からこの記事

APPは、悪い行動の記録を達成することである、第7章の内容(部分的に実装されている)、具体的な行動内容の表示のリストがあります。第7章では、主にフラグメントを初期化するプロセスを理解するためのUIの設定内容の個々の動作を完了します。


初期化時に、次のレコードと理解のいくつかの断片を読み込む(単​​にコアコードの一部スティック)

まず、私は良いのスペースを占め、単なるプレースホルダとして、<でframeLayout>タグの主な活動のxmlファイルを導入し、idがfragment_containerです。

< でframeLayout
         アンドロイド:layout_width = "match_parent" 
        のandroid:layout_height = "match_parent" 
        アンドロイド:ID = "@ + ID / fragment_container" 
    > </ でframeLayout >

主な活動OnCteateプロセスが初期化されます

保護された ボイドのonCreate(バンドルsavedInstanceState){
         スーパー.onCreate(savedInstanceState)。
        setContentView(R.layout.activity_main)。

        FragmentManagerのFMは = この.getSupportFragmentManagerを(); 
        断片F = fm.findFragmentById(R.id.fragment_container)。
        もし(== F NULL ){ 
            F = 新しいCrimeFragment()。
            fm.beginTransactionは()
                    (R.id.fragment_container、F).add 
                    .commitを(); 
        } 
    }

このように要約すると:

  1. Activity.getSupportFragmentManager()メソッドの呼び出し可能な、FragmentManagerを取得します。
  2. findFragmentByIdを(この方法はfindviewbyidの活動に相当します)を取得します。
  3. フラグメントは、トランザクションにFragmentManagerを追加しました。
  4. キーで、道にフラグメント同様にして地図FragmentManagerしてください。

 OnCreateイベント内のコードの断片では、初期化パラメータを達成します:

公共 のボイドのonCreate(@NullableバンドルsavedInstanceState){
         スーパー.onCreate(savedInstanceState);
        この .mCrime = 新しい犯罪(); 
    }

 

 機能OnCreateViewメソッドを実行します。

        ビューV = inflater.inflate(R.layout.fragment_crime、コンテナ、);
        この .mTitleFiled = (のEditText)v.findViewById(R.id.crime_title)。
        この .mTitleFiled.addTextChangedListener(新しいTextWatcher(){ 
            @Override 
            公共 のボイド beforeTextChanged(のCharSequenceの、int型開始、int型のカウント、int型の後){ 

            } 

            @Override 
            公共 無効 onTextChanged(のCharSequenceの、int型開始、int型、前にint型のカウント){
                / ** 
                 *文本变化自动填充犯罪类
                 * / 
                mCrime.setTitle(s.toString()); 
            } 

            @Override 
            公共 ボイドafterTextChanged(編集S){ 

            } 
        })。
        この .mDateButton = (ボタン)v.findViewById(R.id.crime_date)。
        この .mDateButton.setText(MyDateUtil.getDateStr(mCrime.getDate()、NULL ));
        この .mDateButton.setEnabled();
        この .mSolvedCheckBox = (チェックボックス)v.findViewById(R.id.crime_solved)。
        この .mSolvedCheckBox.setOnCheckedChangeListener(新しいOnCheckedChangeListener(){ 
            @Override 
            公共 のボイド onCheckedChanged(CompoundButton buttonView、ブールにisChecked){ 
                CrimeFragment。この.mCrime.setSolved(にisChecked)。
            } 
        })。

        リターン V;

 

Viewオブジェクトは、直接Viewオブジェクトを取得する前に呼び出すことができない、これは活動ではなく、得られ、その後、Viewオブジェクトを呼び出しています
ビューV = inflater.inflate(R.layout.fragment_crime、コンテナ、偽);
次いで、活性のような種々の構成要素および関連リスナーを初期化します
this.mTitleFiled =(のEditText)v.findViewById(R.id.crime_title)。
this.mTitleFiled.addTextChangedListener(新しいTextWatcher(){ 
@Override
ます。public void beforeTextChanged(のCharSequenceの、int型開始、int型のカウント、後のint){

}

@Override
ます。public void onTextChanged(のCharSequenceの、int型開始、int型のカウント、前のint){
/ **
*文本变化自动填充犯罪类
* /
mCrime.setTitle(s.toString());
}

@Override
公共ボイドafterTextChanged(編集S){

}
})。
最後に、ビューはアクティビティの使用のために返されます。
Vを返します。

おすすめ

転載: www.cnblogs.com/aocshallo1/p/12462801.html