Я пытаюсь получить представление Spinner из добавленного Fragment
к своей деятельности, но мне кажется, что я не могу получить ни фрагмент, ни представление.
У меня есть Activity, которая добавляет Fragment
к LinearLayout
, компоновка фрагмента основана на «extra», который исходит из намерения Activity. Все отображается правильно, и я могу видеть все виды фрагмента, но по какой-то причине, когда я вызываю findFragmentByTag(String tag)
, он возвращает ноль, и поэтому я не могу вызвать getView ().
Вот как я добавляю фрагмент кода в свою деятельность:
...onCreate(){
...
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fr = new Fragment(){
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(layoutID, container, false);
}
};
ft.add(R.id.formsListActivity_Container, fr, "form_fragment_tag");
ft.commit();
...
}
Затем я пытаюсь получить такой фрагмент и получить представление счетчика, чтобы добавить массив строк:
Fragment f = fm.findFragmentByTag("form_fragment_tag");
Spinner spinner = (Spinner) f.getView().findViewById(R.id.city_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.city_list, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Но я получаю исключение null, потому что findFragmentByTag () возвращает null
Что я делаю не так? Я проверил код несколько раз, и теги совпадают.
Я также удостоверился, что идентификатор счетчика находится в файле макета XML правильно, и фрагмент загружает правильный макет XML, потому что я могу видеть его (если комментарий, то получить представление из части фрагмента).