Фрагмент и пользовательский вид могут достичь аналогичной функции, я знаю, что фрагмент более многократно используется для сравнения с пользовательским представлением, любыми другими преимуществами/улучшениями для использования фрагмента? Является ли фрагмент предполагаемым для замены Custom View или просто улучшением для определенной цели?Фрагмент против пользовательского вида в Android
Например, код ниже фрагмент:
public class TestFragment extends Fragment {
private TextView tv_name;
private Button btn_play;
private Button btn_delete;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.testfragment, container, false);
}
@Override
public void onStart() {
super.onStart();
tv_name = (TextView)getView().findViewById(R.id.tv_name);
btn_play = (Button)getView().findViewById(R.id.btn_play);
btn_delete = (Button)getView().findViewById(R.id.btn_delete);
}
}
Код для настраиваемого представления:
public class TestCustomView extends LinearLayout {
private TextView tv_name;
private Button btn_play;
private Button btn_delete;
public TestCustomView(Context context, AttributeSet attrs){
super(context, attrs);
setOrientation(LinearLayout.HORIZONTAL);
setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
tv_name = new TextView(context);
addView(tv_name);
btn_play = new Button(context);
addView(btn_play);
btn_delete = new Button(context);
addView(btn_delete);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.testfragment, container, false);
}
}
Оба TestFragment
и TestCustomView
могут создать представление, состоящее из TextView
и Buttons
, и использовать теги Framelayout/fragment
и com.packagename.TestCustomView
, чтобы заявить в действии ' s xml, но в чем преимущества использования фрагмента?
Я нахожу фрагменты полезными, когда вам нужен доступ к чему-то, чего нет у View, например. информацию о жизненном цикле фрагмента или что-то вроде «LoaderManager». – Karakuri