-2

在發佈之前,我檢查了許多問題,但它們沒有幫助我。大部分答案都說ViewPager的佈局不同,所以這就是它產生空指針異常的原因。ViewPager obj即使它已正確啓動並且存在於已定義的佈局中也爲null

下面是我的堆棧跟蹤

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> 

Activity類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/pager:null 不知道爲什麼尋呼機對象爲空。 請幫我我想在viewPager中加載4個片段,謝謝。

+2

的【什麼是一個NullPointerException,如何解決呢?(可能的複製HTTP ://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – Jens

+1

你確定你正在加載正確的佈局文件,這意味着發佈的佈局確實設置在活動 –

+1

您的佈局'activity_home_screen'不包含'viewpagerhome' ViewPager。檢查一次.. !! –

回答

-2

它表示您的MyPagerAdapter類型的變量obj爲空,它的返回值有錯誤。

MyPagerAdapter obj = new MyPagerAdapter(getSupportFragmentManager()); 

該行是問題所在,問題可能出在您的自定義適配器上,或者您的獲取支持片段管理器。如果他們在工作,obj不會爲空。

我敢打賭,如果你註釋掉該行和setadapter行就不會崩潰了,除非你有更大的問題

+0

確定該對象不爲空。現在我檢查代碼if(obj.getCount()== 4)Log.e(「obj」,「not null」); – hemanth5636

+1

Stacktrace清楚地顯示'ViewPager'變量爲空:'由...引發:java.lang.NullPointerException:嘗試調用虛方法'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view .PagerAdapter)'在空對象引用上'。 – 0xDEADC0DE

+0

你知道你的問題的標題說空指針異常的權利。 –

相關問題