-2

Перед публикацией я проверил много вопросов, но они мне не помогли. Большинство ответов говорит о том, что ViewPager находится в разной компоновке, поэтому он генерирует исключение из нулевого указателя.ViewPager obj является нулевым, хотя он инициализирован правильно и также присутствует в определенном макете xml

Ниже мой StackTrace

E/AndroidRuntime: FATAL EXCEPTION: main Process: pdfshare.hemanthreddy.com.pdfshare, PID: 29092 
java.lang.RuntimeException: Unable to start activity ComponentInfo{pdfshare.hemanthreddy.com.pdfshare/pdfshare.hemanthreddy.com.pdfshare.activities.HomeScreen}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)' on a null object reference 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490) 
at android.app.ActivityThread.access$900(ActivityThread.java:154) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5443) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)' on a null object reference 
at pdfshare.hemanthreddy.com.pdfshare.activities.HomeScreen.onCreate(HomeScreen.java:39) 
at android.app.Activity.performCreate(Activity.java:6259) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1130) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490) 
at android.app.ActivityThread.access$900(ActivityThread.java:154) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5443) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 

Это мой xml файл, в котором я объявил Viewpager activity_home_screen.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="pdfshare.hemanthreddy.com.pdfshare.activities.HomeScreen"> 
<android.support.v4.view.ViewPager 
    android:id="@+id/viewpagerhome" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 
</RelativeLayout> 

класс активности HomeScreen.java

package pdfshare.hemanthreddy.com.pdfshare.activities; 

import android.graphics.Color; 
import android.support.annotation.IdRes; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Toast; 

import com.roughike.bottombar.BottomBar; 
import com.roughike.bottombar.BottomBarBadge; 
import com.roughike.bottombar.BottomBarTab; 
import com.roughike.bottombar.OnMenuTabSelectedListener; 
import com.roughike.bottombar.OnTabSelectedListener; 

import pdfshare.hemanthreddy.com.pdfshare.R; 
import pdfshare.hemanthreddy.com.pdfshare.fragments.GroupsFragment; 
import pdfshare.hemanthreddy.com.pdfshare.fragments.HomeFragment; 
import pdfshare.hemanthreddy.com.pdfshare.fragments.NotificationsFragment; 
import pdfshare.hemanthreddy.com.pdfshare.fragments.ProfileFragment; 

public class HomeScreen extends AppCompatActivity { 

ViewPager pager; 
BottomBar bottomBar; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home_screen); 
    bottomBar = BottomBar.attach(this,savedInstanceState); 
    pager = (ViewPager) findViewById(R.id.viewpagerhome); 
    MyPagerAdapter obj = new MyPagerAdapter(getSupportFragmentManager()); 
    //the following two if statements are used to check if objects are null 
    if(obj.getCount()==4) 
     Log.e("obj","not null"); 
    if(pager == null) 
     Log.e("pager","null"); 
    pager.setAdapter(obj); 
    bottomBar.setItems(new BottomBarTab(R.mipmap.ic_action_home_24,"home"), 
      new BottomBarTab(R.mipmap.ic_action_user_group,"groups"), 
      new BottomBarTab(R.mipmap.ic_action_notification,"notifications"), 
      new BottomBarTab(R.mipmap.ic_action_profile,"profile") 
      ); 
    bottomBar.setOnItemSelectedListener(new OnTabSelectedListener() { 
     @Override 
     public void onItemSelected(int position) { 
       T oast.makeText(getApplicationContext(),position,Toast.LENGTH_LONG).show(); 
      pager.setCurrentItem(position); 
     } 
    }); 



    BottomBarBadge message = bottomBar.makeBadgeForTabAt(2,"red",10); 
    message.show(); 

} 



private class MyPagerAdapter extends FragmentStatePagerAdapter 
{ 

    public MyPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) 
     { 
      case 0: 
       return new HomeFragment(); 
      case 1: 
       return new GroupsFragment(); 
      case 2: 
       return new NotificationsFragment(); 
      case 3: 
       return new ProfileFragment(); 
      default: 
       return new HomeFragment(); 
     } 
    } 

    @Override 
    public int getCount() { 
     return 4; 
    } 
} 


} 

E/obj: not null E/пейджер: null не знаю, почему объект пейджера является нулевым. Пожалуйста, помогите мне. Я пытаюсь загрузить 4 фрагмента в viewPager, спасибо.

+2

Возможно дубликат [Что такое NullPointerException, и как это исправить?] (HTTP : //stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – Jens

+1

вы уверены, что загружаете правильный файл макета, что означает, что размещенный макет действительно установленный в действии –

+1

Ваш макет 'activity_home_screen' не содержит ViewPager' viewpagerhome'. Проверьте это один раз .. !! –

ответ

-2

это означает, что ваша переменная obj типа MyPagerAdapter имеет значение null, есть ошибка с ее возвращаемым значением.

MyPagerAdapter obj = new MyPagerAdapter(getSupportFragmentManager()); 

Эта проблема является проблемой, проблема может быть в вашем пользовательском адаптере или в вашем менеджере фрагментов поддержки. если бы они работали, obj не был бы нулевым.

я держал пари, если вы закомментировать эту строку и setadapter линию он не будет врезаться больше, если у вас есть большие проблемы

+0

Убедитесь, что объект не равен нулю. прямо сейчас я проверял код if (obj.getCount() == 4) Log.e ("obj", "not null"); – hemanth5636

+1

Стекло показывает, что переменная 'ViewPager' имеет значение null:' Caused by: java.lang.NullPointerException: попытка вызвать виртуальный метод 'void android.support.v4.view.ViewPager.setAdapter (android.support.v4.view .PagerAdapter) 'в ссылке нулевого объекта. – 0xDEADC0DE

+0

Вы знаете, что в названии вашего вопроса указано правильное исключение нулевого указателя. –

 Смежные вопросы

  • Нет связанных вопросов^_^