Мне сложно понять жизненный цикл моего фрагмента, когда тот же фрагмент создается на трех вкладках. Основной виджет в каждом фрагменте - это объект EditText, который отслеживается в классе, который я создал, по одному на вкладку, создаваемом при первом выполнении моего приложения. Когда приложение выполняет ввод (который предоставляется кнопками на экране, а не клавиатурой), накладывается текст на EditText второй вкладки.Как использовать EditText из одного фрагмента на вкладках?
Ввод представляется следующим getItem()
внутри моего FragmentPagerAdapter
. Я понимаю, что getItem()
вызывается дважды, когда мои вкладки создаются и что это совершенно нормальное поведение, но то, что я не понимаю, - это проблема фокуса или логическая проблема с моим дизайном кода (я надеюсь, что первый). Может ли это иметь дело с instantiate()
, возвращаемым getItem()
? Как только instantiate()
вызывается, фокус всегда следует за ним, так как у меня есть эта строка кода в onCreateView()
моего фрагмента?
active.editLine = (EditText) v.findViewById(R.id.display);
// active is the currently active object of my app's class.
Причина Подозреваю instantiate()
вызывает мою ошибку, потому что, когда я увеличил рендеринг страниц через setOffscreenPageLimit(2)
текст был быть отправлен на третью вкладку.
На этом этапе я попытался отследить, что происходит там, где это было хорошим учебным упражнением. То, что я обнаружил в своей борьбе, было, вероятно, вопросом фокуса, однако мои попытки устранить фокус и фокус настройки, похоже, не были применены, и я даже не уверен, что это основная проблема. Я закончил тем, что использовал active.editLine.debug(0)
, чтобы увидеть, был ли фокус потерян или получен, и это не так. Я прочитал некоторые из this fairly popular post и сосредоточил внимание на своем XML, но это тоже не помогло.
Просто чтобы убедиться, где я должен устанавливать объекты EditText? В OnCreateView()
в моем фрагменте? Именно здесь находится код выше. Я создаю три объекта своего пользовательского класса в своей деятельности как глобальные переменные. У меня есть получатели и сеттеры в том, что я чувствую, являются подходящими областями моего кода. Должен ли приведенный выше код жить в onCreate()
моего фрагмента? Если вы считаете, что это проблема фокуса, каков приемлемый метод отключения фокуса и использовать его только тогда, когда он мне нужен? Что еще более важно, когда мое приложение сначала запускается, где я включаю фокус? OnTabSelected()
вызывается до getItem()
выполняется дважды, чтобы отобразить первые две вкладки. Итак, где я могу получить первоначальный фокус, если я буду глобально отключать его? Можно настроить фокус с помощью типа слушателя?