私のアプリケーションでは、2つのフラグメント(スライディングタブのアクティビティ内の各タブ)があります。 2つの断片には同じメソッドがありますが、DRY(自分自身を繰り返さない)の原則に従うようにこれらのメソッドを抽象化できると思いました。これを行う推奨方法はありますか?フラグメントに同じメソッドを使用させる
静的メソッドのutilクラスは良い方法ですか?または、これらのメソッドを持つ抽象クラス "MyAbstractFragment"を作成し、このクラスを拡張する必要がありますか?
たとえば、
public class MyCustomFragment extends Fragment {
protected LinearLayout linearLayout;
protected MyAdapter adapter;
//more common fields
void addButtonToFragmentView(final String btnText) {
final Button btn = new Button(getContext());
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
linearLayout.removeView(btn);
}
});
btn.setText(btnText);
linearLayout.addView(btn);
}
void upDateAdapterList(List<String> list){
//....
adapter.updateList(list);
}
}
私のフラグメントがこのクラスを拡張し、プロパティを設定してメソッドを使用する可能性があります。しかし、私は同様に、メソッドのためだけに静的なutilクラスを作ることもできます。addButtonToFragmentView(final String btnText, Context context, final LinearLayout linearLayout)
とupDateAdapterList(List<String> list, MyAdapter adapter)
これを行う方法がありますか?
ちょうどのUIFactoryクラスにメソッドaddButtonToFragmentViewを移動:
コードから取ら? onClickListernerボタンのデリゲートを作成する必要がありますか?これは、ボタンの追加メソッドを簡単に再利用できるので、より標準的なアプローチのようです。私はこの回答を受け入れてマークしますが、より多くの情報を得るために開いています。 – user3711421
その場合、addButtonToViewはOnClickListenerとパラメータを受け入れます。私はそれをあなたのUI工場に移したと言いました。なぜなら、将来的にどんなアクティビティーやフラグメントにもビューを動的に追加する必要があるからです。したがって、彼らはこのUIFactoryクラスを使用します。 –