Я не совсем уверен, какой другой вид информации/кода я должен предоставить. Странная вещь в другом фрагменте и активности, этот почти идентичный код работает. Вот мой onViewCreated
метод:Исключительное исключение указателя в представлении, полученном методом onViewCreated внутри фрагмента
Внутри фрагмента:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
mHelveticaTF = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Helvetica.otf");
oopsTV = (TextView) view.findViewById(R.id.noClub_oops); // I've tried getView() and getActivity() - same result
oopsTV.setTypeface(mHelveticaTF); // Null pointer exception here.
}
@Override
public void View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_no_club_membership, container, false);
}
Исключение нулевого указателя происходит при вызове setTypeface
на oopsTV (что, по-видимому нуль). onCreateView
, похоже, раздувает правильный .xml-файл. R.id.noClub_oops
определенно находится в моем. XML-файле как TextView.
Это исключение нулевого указателя также встречается в onCreateView после того, как фрагмент завышен и перед возвратом представления (не используя getView()
, а фактический указатель, например, View v
).
В конце onCreate
метода моей деятельности, я создать FragmentTransaction
, чтобы показать мой фрагмент:
Внутри активность:
setContentView(R.layout.activity_create_club);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.CreateClubHolder, newClubFormFragment.newInstance());
ft.commit();
Вот мой fragment_no_club_membership.xml файл:
<LinearLayout xmlns:android="http://schemas.com/android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
...
...
<TextView
android:name="@+id/noClub_oops"
Я устал чистить проект и снова бегать. Такое же исключение нулевого указателя.
Вот трассировки стека (отредактированный имя путь к папке для личной жизни):
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.TextView.setTypeface(android.graphics.Typeface)' on a null object reference
at com.myname.cs.createClub.NoClubMembershipFragment.onViewCreated(NoClubMembershipFragment.java:52)
UPDATE:
я забыл включить код, где я также извлекла кнопку в методе onViewCreated:
public void onViewCreated(View view, Bundle savedInstanceState) {
mHelveticaTF = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Helvetica.otf");
oopsTV = (TextView) view.findViewById(R.id.noClub_oops); // I've tried getView() and getActivity() - same result
oopsTV.setTypeface(mHelveticaTF); // Null pointer exception here.
// oopsTV.isActivated() crashes the program.
createClubButton = (Button) view.findViewById(R.id.noClub_create);
// createClubButton.isActivated() does NOT crash the program. Button is not null.
}
Я только что узнал, что кнопка не является нулевой, и я могу ее получить из findViewById
. Когда я избавляюсь от вызовов, чтобы изменить Typeface, я не получаю исключений, и я могу видеть взгляды моего фрагмента на моем приложении, TextViews и все. Кажется, что TextViews раздуваются, но я не могу их восстановить. Когда я запускаю isActivated
на этих TextViews, я получаю исключение с нулевым указателем.
Похоже, что проблема в том, что я не могу получить TextViews, несмотря на то, что они правильно раздуваются, но я могу получить другие компоненты, такие как кнопки.
Какое имя xml вы упомянули выше? –
fragment_no_club_membership.xml. Я отредактирую, чтобы отразить это. – Biiiiiird
Просьба включить stacktrace –