android xml nullpointerexception android-viewpager

android - java.lang.Class java.lang.Object.getClass() ''en una referencia de objeto nula



xml nullpointerexception (8)

De acuerdo con lo que veo que estás devolviendo nulo en este método:

@Override public Fragment getItem(int position) { if(position==0){ EnthusamTab enthusamTab=new EnthusamTab(); return enthusamTab; } return null; }

Intento usar viewPager con tablayout, pero cuando configuro el adaptador con el paginador de vista, obtengo el error "java.lang.NullPointerException: intento invocar el método virtual ''java.lang.Class java.lang.Object.getClass () on una referencia de objeto nula "no entiendo por qué se muestra este error.

ver el adaptador del sistema del paginador:

viewPager= (ViewPager) findViewById(R.id.viewPager_id); viewPager.setAdapter(newViewPagerAdapterUseThisClass(getSupportFragmentManager(),14));

Adaptador clss:

class ViewPagerAdapterUseThisClass extends FragmentPagerAdapter { int countTabItem; ViewPagerAdapterUseThisClass(FragmentManager fm,int contTabItem) { super(fm); this.countTabItem=contTabItem; } @Override public Fragment getItem(int position) { if(position==0){ EnthusamTab enthusamTab=new EnthusamTab(); return enthusamTab; } return null; } @Override public int getCount() { return countTabItem; } }

Ver archivo pager xml:

<android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/tab_layout_id" android:id="@+id/viewPager_id"/>

Registro de errores:

java.lang.NullPointerException: Attempt to invoke virtual method ''java.lang.Class java.lang.Object.getClass()'' on a null object reference at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:380) at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:375) at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:103) at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1034) at android.support.v4.view.ViewPager.populate(ViewPager.java:1248) at android.support.v4.view.ViewPager.populate(ViewPager.java:1116) at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1642) at android.view.View.measure(View.java:19861) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) at android.view.View.measure(View.java:19861) at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1081) at android.view.View.measure(View.java:19861) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139) at android.view.View.measure(View.java:19861) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:19861) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:19861) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:19861) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:689) at android.view.View.measure(View.java:19861) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2275) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1366) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1619) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6343) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874) at android.view.Choreographer.doCallbacks(Choreographer.java:686) at android.view.Choreographer.doFrame(Choreographer.java:621) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6126) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)


Esta excepción se produce cuando devuelve null al getItem(int position) de PagerAdapter .

getCount() establecer un valor de retorno (n) en el método getCount() y devolver un Fragment en el getItem(int position) para todas las getItem(int position) (0 .. n-1).

Por ejemplo, si devuelve 3 desde el método getCount() , entonces debe devolver un Fragment no nulo para las posiciones 0, 1 y 2 en el getItem(int position) . Si devuelve un nulo para la posición 0, 1 o 2, obtendrá:

java.lang.NullPointerException: intento invocar el método virtual ''java.lang.Class java.lang.Object.getClass ()'' en una referencia de objeto nula

private static class MyPagerAdapter extends FragmentPagerAdapter { ... @Override public int getCount() { return 3; } @Override public Fragment getItem(int position) { switch (position) { case 0: return new XFragment(); case 1: return new YFragment(); case 2: return new ZFragment(); default: return null; // Problem occurs at this condition! } } }


Este error generalmente ocurre cuando tiene pocos fragmentos para devolver que el conteo especificado. Como por ejemplo, regresando cuenta = 3, y devuelve nulo en la segunda posición. Tenga en cuenta que cuenta es un índice basado en cero.


Este tipo de excepción solo ocurre cuando intenta usar el método getCount() para devolver el valor más de lo que se inicializa en las pestañas. Cambie su valor de retorno.


Regreso para todas las cuentas. Prueba esto:

Override public Fragment getItem(int position) { EnthusamTab enthusamTab=new EnthusamTab(); return enthusamTab; }


Se está produciendo un problema para volver nulo en la función de recuento de fragmentos.

@Override public Fragment getItem(int position) { switch (position) { case 0: return new XFragment(); case 1: return new YFragment(); case 2: return new ZFragment(); default: return null; // Problem occurs at this condition! } }

Aquí el soporte exterior se produce un error.

Así que la respuesta mencionada es correcta y está funcionando.

public Fragment getItem(int position) { if (position == 0) { Tab1 tab1 = new Tab1(); return tab1; } if (position == 2) { Tab2 tab2 = new Tab2(); return tab2; } else { Tab3 tab3 = new Tab3(); return tab3; } }

responde bien.


Trate de hacer esto en getCount , cuente todos los fragmentos que tiene: como 1..5

@Override public int getCount() { return 5; //her }


public Fragment getItem(int position) { if (position == 0) { Tab1 tab1 = new Tab1(); return tab1; } if (position == 2) { Tab2 tab2 = new Tab2(); return tab2; } else { Tab3 tab3 = new Tab3(); return tab3; } }