我在我的應用程序中有兩個片段(每個滑動選項卡活動中的一個選項卡)。這兩個片段有一些現在相同的方法,我認爲我可以抽象出那些方法來遵循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);
}
}
比我的片段可以擴展這個類,並設置屬性和使用方法。但是我也看到,我也可以爲方法創建一個靜態使用類,如addButtonToFragmentView(final String btnText, Context context, final LinearLayout linearLayout)
和upDateAdapterList(List<String> list, MyAdapter adapter)
或者是否有這樣做的首選方法?
幾乎像我這樣做只是移動的方法addButtonToFragmentView到UIFactory類?比我不得不爲onClickListerner上的按鈕創建委託?這似乎是一種更加標準的方法,因爲添加按鈕方法很容易重用。我會將這個答案標記爲公認的,但我仍然願意提供更多的意見。 – user3711421
如果是這樣,那麼你的addButtonToView將接受OnClickListener以及一個參數。我說要將它移到UI工廠,因爲如果將來說任何活動和片段都可能有動態添加視圖的需求。所以他們只會使用這個UIFactory類。 –