第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を(); } }
このように要約すると:
- Activity.getSupportFragmentManager()メソッドの呼び出し可能な、FragmentManagerを取得します。
- findFragmentByIdを(この方法はfindviewbyidの活動に相当します)を取得します。
- フラグメントは、トランザクションにFragmentManagerを追加しました。
- キーで、道にフラグメント同様にして地図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を返します。