フラグメント活動を理解する
-
13-12-2019 - |
質問
主な活動には、全体の特別な方法を持つタイマーだけであるアプリがあります。これは問題なしでうまく機能します。さて、私はそれが働いているので、私はフラグメントを介して多数の場所にタイマーを挿入するつもりです。
私の断片活動に特別な方法をすべて含めるべきですか? IE:
public class Timer_fragment extends android.support.v4.app.Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.timer_frag, container, false);
}
//SHOULD I insert my special methods here?
}
.
または私はそれらを私のメインに含めるべきですか?
私は両方の方法を試していて、フラグメント活動の方法は私にJavaでエラーを与えたので尋ねていますが、それらを私のメインに置くとランタイム中にエラーが発生しました。基本的に私はスタンドアロンのアプリケーションとして素晴らしい動作をしていますが、それをフラグメントに変換しようとしているので、私はそれを私のアプリの複数の場所に接続することができます。
「特殊方法」の例: 私はレイアウトで見て、タイマーに入力された新しい番号に従って更新します。これらの方法は、それらが使用する前に膨張することを必要とする。
注:実行時のエラーは、unullPointerExceptionsです。
解決
フラグメントの背後にある考えは、それが他の活動で、あるいは同じ活動でさえ、他の断片の追加または非存在下でさえも使用できる活動の再構築(すなわちフラグメント)であるということである。
Gmailアプリでは、受信トレイ内のすべての電子メールのリストは1つのフラグメントであり、Eメールの実際の内容は別のフラグメントです。ランドスケープモードのタブレットでは、両方が表示されます。ただし、ポートレートモードの電話機は、一度に2つのフラグメントのうちの1つだけを表示します。
したがって、各フラグメントは、そのフラグメントを使用するのに必要なすべての機能とUI成分をカプセル化する必要があります。これは、フラグメントのビューXMLを膨張させるなど、すべての「特別な」メソッドのすべてがフラグメント内で起こるべきです。
フラグメントを利用するアクティビティ(またはアクティビティ)は、フラグメントをアクティビティのレイアウトに追加するためにFragmentManager(または同様の方法)を使用するだけでよい。フラグメントの親活動はまた、フラグメントと他のアクティビティ、フラグメント、またはスレッドなどの他のコンポーネント間の通信を処理する必要があります。