App stürzt ab, wenn versucht wird, RecyclerView auf Android 5.0 zu verwenden

Lesezeit: 7 Minuten

App sturzt ab wenn versucht wird RecyclerView auf Android 50
Joe

Ich versuche, mit dem neuen RecyclerView herumzuspielen, und jedes Mal, wenn ich versuche, es auszuführen, stürzt meine App sofort ab. Es gibt mir NullPointerException für den Versuch, auf Methoden zuzugreifen von android.support.v7.widget.RecyclerView. Ich habe mir andere Beiträge angeschaut und festgestellt, dass die meisten Leute keine haben compile 'com.android.support:recyclerview-v7:+' aber das habe ich probiert und es hat überhaupt nicht geholfen. Ich bin mir nicht sicher, was ich jetzt tun soll, wäre für jede Hilfe dankbar. Hier das Fehlerprotokoll: (Ich würde ein Bild posten, aber ich habe noch keine 10 Wiederholungen)

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView$LayoutManager.onMeasure(android.support.v7.widget.RecyclerView$Recycler, android.support.v7.widget.RecyclerView$State, int, int)' on a null object reference
        at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1764)
        at android.view.View.measure(View.java:17430)
        at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727)
        at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463)
        at android.view.View.measure(View.java:17430)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
        at android.view.View.measure(View.java:17430)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
        at android.view.View.measure(View.java:17430)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
        at android.view.View.measure(View.java:17430)
        at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:851)
        at android.view.View.measure(View.java:17430)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
        at android.view.View.measure(View.java:17430)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
        at android.view.View.measure(View.java:17430)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
        at android.view.View.measure(View.java:17430)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
        at android.view.View.measure(View.java:17430)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
        at android.view.View.measure(View.java:17430)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5786)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
        at android.view.Choreographer.doCallbacks(Choreographer.java:580)
        at android.view.Choreographer.doFrame(Choreographer.java:550)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)

  • Für jeden, der diesen durch Viewpager-Tabs verursachten Fehler hat, sehen Sie sich diese Lösung an

    – Hassan Gilak

    28. Dez. 15 um 20:38 Uhr

  • Haben Sie das Problem gelöst? Bitte helfen Sie mir, ich habe das gleiche Problem

    – Sagar

    28. November ’17 um 6:58

  • Denken Sie daran, zu setzen/erstellen/registrieren in onCreateView was Sie entfernen/zerstören/abmelden in onDestroyView… Diesen Lebenszyklen muss man folgen!

    – Sakiboy

    4. Dezember ’17 um 20:45

1641995241 800 App sturzt ab wenn versucht wird RecyclerView auf Android 50
wieder

Dieses Problem tritt normalerweise auf, wenn nein LayoutManager wurde für die bereitgestellt RecyclerView. Du kannst es so machen:

final LinearLayoutManager layoutManager = new LinearLayoutManager(context);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);

  • Ich glaube nicht, dass es endgültig sein muss, also denke ich nicht, dass das das Problem war. In meinem Fall habe ich ein Fragment mit recyclerView implementiert und versucht, nur einen Verweis von onCreateView darauf beizubehalten und später beim Laden der Daten einen layoutManager zu setzen. Ich hatte dieses Problem und es verschwand, als ich den layoutManager früher im Spiel in der onCreateView-Methode festgelegt habe.

    – Nemanja Kovacevic

    31. Dezember ’14 um 21:45

  • @NemanjaKovačević Nun, ich nehme an, dass jede Variable, die später nicht geändert werden muss, als . deklariert werden muss final, deshalb habe ich es erklärt final Hier.

    – wieder

    1. Januar ’15 um 10:52


  • Da LinearLayoutManager standardmäßig vertikal ist, können Sie Folgendes verwenden: recyclerView.setLayoutManager(new LinearLayoutManager(context));

    – ll

    25. Februar ’15 um 0:25

  • Gott sei Dank können wir die gleichen Fehlermeldungen googeln, die von Google erstellt werden, um sie zu verstehen.

    – jhegedus

    25. August ’16 um 10:29

  • @wesleyfranks Es ist schwer zu sagen, warum Sie eine Null-Objektreferenz erhalten, ohne sich 1. den Code anzusehen, der RecyclerView einrichtet, und 2. den Stacktrace, den Sie nach dem Absturz erhalten. 🙂

    – wieder

    20. Juni ’19 um 13:42

In meinem Fall war es nicht mit ‘final’ verbunden, sondern mit dem im @NemanjaKovačević-Kommentar zur @aga-Antwort erwähnten Problem. Ich habe einen layoutManager beim Laden von Daten eingestellt und das war die Ursache für den gleichen Absturz. Nach dem Verschieben des LayoutManager-Setups in onCreateView meines Fragments wurde das Problem behoben.

Etwas wie das:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
{
...
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler);

mLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(mLayoutManager);

  • Noch einmal: Ich sage nicht, dass dieses Problem irgendwie damit zusammenhängt, dass die Variable nicht endgültig ist. Das Problem ist das LayoutManager wurde nicht bereitgestellt, das ist es. Sie können die Variable auf zeigen LayoutManager endgültig oder nicht endgültig – es ändert nichts.

    – wieder

    13. Januar ’15 um 16:15

  • @Yurik Ich verwende Recyclerview in Aktivität, nicht auf Fragment. was ist bei mir der fall?

    – Youri

    18. August ’16 um 8:23

  • @Youri, Sie sollten das LayoutManager-Setup einfach in das onCreate Ihrer Aktivität platzieren, denke ich.

    – YuriK

    19. August ’16 um 15:04

App sturzt ab wenn versucht wird RecyclerView auf Android 50
Maurice

Für mich hatte ich das gleiche Problem, das Problem bestand darin, dass ein nicht verwendetes RecyclerView in XML vorhanden war und die Ansicht verschwunden war, aber ich binde es nicht an einen Adapter in Activity, daher das Problem. Es wurde gelöst, sobald ich solche ungenutzten Recycler-Ansichten in xml entfernt habe

dh – ich habe diese Ansicht entfernt, da sie nicht im Code aufgerufen wurde oder ein Adapter eingestellt wurde

<android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/rv_profileview_allactivities"
        android:visibility="gone" />

  • Auch hier war alles perfekt, aber es funktionierte nicht. Also habe ich ungenutzte Recyclerviews entfernt und es hat ohne Probleme funktioniert. Danke Mann @Maurice ^^

    – Bhupinder

    15. Juli ’15 um 8:48

  • Nachdem ich einen Tag verschwendet habe, habe ich deine Lösung ausprobiert und es hat funktioniert 😀 [ 🙁 my time got wasted]

    – mfaisalhyder

    27. Januar ’16 um 19:10 Uhr

Ich habe diesen Absturz erlebt, obwohl ich das hatte RecyclerView.LayoutManager richtig eingestellt. ich musste das verschieben RecyclerView Initialisierungscode in den onViewCreated(...) Rückruf, um dieses Problem zu beheben.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_listing, container, false);
    rootView.setTag(TAG);
    return inflater.inflate(R.layout.fragment_listing, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    mLayoutManager = new LinearLayoutManager(getActivity());
    mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);

    mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
    mRecyclerView.setItemAnimator(new DefaultItemAnimator());
    mRecyclerView.setLayoutManager(mLayoutManager);

    mAdapter = new ListingAdapter(mListing);
    mRecyclerView.setAdapter(mAdapter);
}

1641995242 11 App sturzt ab wenn versucht wird RecyclerView auf Android 50
Katwal-Dipak

Sie müssen verwenden setLayoutManager in dem RecyclerView#onCreate() Methode. Vor dem Hinzufügen recyclerView zu einer Ansicht muss es die LayoutManager einstellen.

 private RecyclerView menuAsList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    menuAsList = (RecyclerView) findViewById(R.id.recyclerView_mainMenu);
    menuAsList.setLayoutManager(new LinearLayoutManager(Home.this));

}

Machen Sie ein ProgressBar Update reibungslos
Satan Pandeya

Ich habe dieses Problem aufgrund einer falschen Referenz von RecyclerView Ich würde.

recyclerView = (RecyclerView) findViewById(R.id.rv_followers_list);

zu

recyclerView = (RecyclerView) findViewById(R.id.rv_search_list);

1641995242 667 App sturzt ab wenn versucht wird RecyclerView auf Android 50
iam_muqshid

recyclerView =
            (RecyclerView) findViewById(R.id.recycler_view2);

Erkundigen Sie sich bei Ihrer Recycler-Ansichts-ID, die auf die tatsächliche Recycler-Ansicht verweist, um mein Problem zu lösen

.

452410cookie-checkApp stürzt ab, wenn versucht wird, RecyclerView auf Android 5.0 zu verwenden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy