Я пытаюсь написать фрагмент, который имеет способ установить что-то в TextView. Поэтому у меня есть следующий фрагмент:Как использовать метод внутри фрагмента?
public class DetailFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.my_fragment, container, false);
// setText("set it to something");
return view;
}
public void setText(String item) {
TextView view = (TextView) getView().findViewById(R.id.detailsText);
view.setText(item);
}
}
Это прекрасно работает. Он отображает текст. Теперь я хочу изменить текст в текстовом виде программно. Я думал, что сначала начну с редактирования его изнутри фрагмента. Поэтому у меня есть метод, который должен быть способен это сделать. Когда я сейчас раскомментирую setText("set it to something");
, он дает мне InflateException: Error inflating class fragment.
, и я не знаю, почему.
Кто-нибудь знает, как я могу это решить?
вызова метода в onResume – waqaslam
@Waqas - Спасибо за это. Действительно работает как шарм! Другие люди также предлагают другие способы сделать это в onCreateView. Какой из них был бы лучшим/правильным способом сделать это; в onCreateView или в onResume? – kramer65
Выполнение этого в 'onResume()' приведет к тому, что этот метод будет вызываться каждый раз, когда фрагмент приостанавливается и возобновляется, что плохо, потому что иногда фрагмент просто приостанавливается и возобновляется (когда отображается диалог), в этом случае это не очень хорошая идея чтобы снова установить текст без какой-либо причины. Я предлагаю вам переместить этот вызов на 'onViewCreated()' или 'onActivityCreated()'. –