Aus irgendeinem seltsamen Grund, wenn findViewById in der onStart-Methode aufgerufen wird, gibt es manchmal null zurück, aber nur beim Drehen des Bildschirms.Fragment getView(). FindViewById gibt null zurück, wenn die Ausrichtung geändert wird
public static class QuestionsFragment extends PlaceholderFragment {
private RecyclerView questionsRecyclerView;
private ConstraintLayout filtersLayout;
private Button filtersBtn;
private Spinner questionCategorySpinner;
public QuestionsFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onStart() {
super.onStart();
View view = getView();
this.filtersBtn = (Button) getView().findViewById(R.id.FiltersBtn);
this.filtersLayout = (ConstraintLayout) view.findViewById(R.id.filtersLayout);
this.filtersBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Animation slideDownAnimation = AnimationUtils.loadAnimation(view.getContext(), R.anim.slidedown);
final Animation slideUpAnimation = AnimationUtils.loadAnimation(view.getContext(), R.anim.slideup);
boolean slideDown = filtersLayout.getVisibility() == View.GONE;
filtersLayout.setVisibility(filtersLayout.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
if (slideDown) {
filtersLayout.setAnimation(slideDownAnimation);
} else {
filtersLayout.setAnimation(slideUpAnimation);
}
}
});
questionsRecyclerView = (RecyclerView) view.findViewById(R.id.questionsRecyclerView);
questionCategorySpinner = (Spinner) view.findViewById(R.id.questionCategorySpinner);
RecyclerView.LayoutManager questionsLayoutManager = new LinearLayoutManager(view.getContext());
RecyclerView.Adapter questionsRecyclerViewAdapter = new QuestionAdapter(State.questions);
questionsRecyclerView.setLayoutManager(questionsLayoutManager);
questionsRecyclerView.setAdapter(questionsRecyclerViewAdapter);
questionCategorySpinner.setAdapter(new ArrayAdapter<Category>(view.getContext(),
android.R.layout.simple_spinner_dropdown_item, State.categories));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_questions, container, false);
return view;
}
}
PlaceholderFragment erweitert Fragment.
Ich kann dieses Problem anscheinend nicht lösen Ich kann diese Logik auch nicht in der onCreate-Methode ausführen, da die onCreateView-Methode noch nicht aufgerufen wurde?
Kann jemand hier heraus helfen, würde es sehr geschätzt werden, wenn mir jemand sagen könnte, was dieses Problem verursacht. Stack-Trace
Verursacht durch: java.lang.NullPointerException: Der Versuch, virtuelle Methode 'Leere android.widget.Spinner.setAdapter (android.widget.SpinnerAdapter)' auf ein Null-Objekt Referenz bei com.mccarthydaniel aufzurufen. doask.MainActivity $ QuestionsFragment.onStart (MainActivity.java:203) bei android.support.v4.app.Fragment.performStart (Fragment.java:2380) bei android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager. java: 1458) bei android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1740) bei android.support.v4.app.FragmentM anagerImpl.moveToState (FragmentManager.java:1809) bei android.support.v4.app.FragmentManagerImpl.dispatchStateChange (FragmentManager.java:3217) bei android.support.v4.app.FragmentManagerImpl.dispatchStart (FragmentManager.java:3176) bei android.support.v4.app.FragmentController.dispatchStart (FragmentController.java:203) bei android.support.v4.app.FragmentActivity.onStart (FragmentActivity.java:570) bei android.support.v7.app. AppCompatActivity.onStart (AppCompatActivity.java:177) bei android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1334) bei android.app.Activity.performStart (Activity.java:7020)
War es notwendig, die 'onStart'-Methode zu verwenden? – Xenolion
Nun, entweder das oder in der onCreateView-Methode. Da ich auf die Ansicht zugreifen muss, die bei onCreate nicht vorhanden ist. – NibbleBits