У меня есть блок TextView, определенный в макете.Не удается получить доступ к TextView с помощью другого метода
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/article"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:textSize="18sp" />
Я определяю частный атрибут класса как:
View inflatedView;
Позже, в методе onCreateView, это дает значение:
inflatedView = inflater.inflate(R.layout.article_view, container, false);
При доступе поле TextView из onCreateView метод, он не создает никаких проблем, однако, пытаясь получить к нему доступ из других методов, возвращает нулевую ссылку.
Вот код, я использую:
TextView article = (TextView) inflatedView.findViewById(R.id.article);
мне удалось получить его на работу, установив статью в качестве частного атрибута, инициализирует его значение в методе onCreateView, а затем использовать его во всех других методов, однако , Я не могу понять, в чем проблема с вышеприведенным подходом.
EDIT:
View inflatedView;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (savedInstanceState != null) {
mCurrentPosition = savedInstanceState.getInt(ARG_POSITION);
}
//article_view contains the article TextView
inflatedView = inflater.inflate(R.layout.article_view, container, false);
return inflatedView;
}
public void updateArticleView(int position) {
TextView article = (TextView) inflatedView.findViewById(R.id.article);
article.setText(Ipsum.Articles[position]);
mCurrentPosition = position;
}
вы можете обеспечить полное выполнение кода первого подхода? –
Если TextView является корневым элементом в макете, вам не нужно вызывать 'findViewById (...)' - вызов 'inflate (...)' будет возвращать TextView напрямую. – adelphus
и откуда вы вызвали функцию updateArticleView()? –