2016-06-25 5 views
0

Я новичок в Android и хотят знать, что в этом способе жизненного цикла, было бы лучше, чтобы загрузить с видом на фрагменте какКогда загружать виды в Фрагменте из макета в андроиде

editText_full_name = (EditText) getActivity().findViewById(R.id.editText_full_name); 

Я имею в виде onResume() но что-то говорит мне, что это не подходит. Тем не менее я хочу знать о лучшей практике этого. Также я использую интерфейс как обратный вызов связи от фрагмента к активности.

EDIT: Также я хочу знать, когда присоединить слушателей, например onClickListeners, к кнопке в жизненном цикле фрагмента.

+0

onCreateView метод после инфляции или метод onViewCreated; – Sush

ответ

1

Проверить Complete Android Fragment & Activity Lifecycle.

Возможно, вы захотите добавить слушателя в Fragment.onViewCreated(), когда будет гарантирована сборка иерархии представления.

0

onCreateView метод - это то, что вы ищете.

1
@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_layout, 
       container, false); 

     Button button = (Button) rootView.findViewById(R.id.buttin_id); 
     button.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

       //..... 

       } 
      }); 
    } 
1

Это зависит от того, чего вы пытаетесь достичь.

Прежде всего, есть функция public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState). Там инициализация представления может быть выполнена с помощью LayoutInflater. Чтобы получить ссылку на дочерние представления, вы должны вызвать метод findViewById в представлении, возвращенном из LayoutInflater инициализации. В этой функции также предоставляется аргумент Bundle, который может помочь вам отреагировать на изменения конфигурации (т. Е. Поворот экрана). Если аргумент Bundle не является нулевым, то фрагмент воссоздается после изменения конфигурации.

Тогда есть функция public void onViewCreated(View view...). Там вы также можете создавать представления. Он вызывается каждый раз, действие открывает фрагмент.

Что касается вопроса о производительности, я послал вас this Stackoverflow answer

Не инициализировать мнения в onResume как называется это событие каждый раз, когда приходит на передний план (скользящий вниз и вверх уведомления панели, приходя от фона , экран включен и выключен).

1

Правильный ответ - связать представления в onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState). Btw, я предлагаю вам посмотреть here. Это фантастический инструмент для привязки видов. Это ясно, & просто, вам не нужно делать много заявлений, просто объявите переменную как переменные фрагмента, используя @BindView(R.id.myId) & добавьте Butteknife.bind(this) в действиях и Butterknife.bind(this, rootView) в фрагменты.

Смежные вопросы