-1

你好我想在ViewPager類的幫助下創建tabLayout,這樣我就可以在這些選項卡之間滑動。創建tabLayout時拋出NullPointerException

我正在創建標籤我設置了fragments,viewPagerAdapterviewPager。這裏我也初始化了tabLayout,但我不明白這個錯誤。請幫我解決。

這裏是一個包含表格佈局我的主要XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.davda.musicmain.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <include 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      layout="@layout/toolbar_layout" 
      > 

      <android.support.design.widget.TabLayout 
       android:layout_height="wrap_content" 
       android:layout_width="match_parent" 
       android:id="@+id/tabLayout" 
       app:tabMode="scrollable" 
       app:tabGravity="center"> 

      </android.support.design.widget.TabLayout 
       > 
     </include> 
    </android.support.design.widget.AppBarLayout> 
    <android.support.v4.view.ViewPager 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/viewPager"></android.support.v4.view.ViewPager> 
    </RelativeLayout> 

這裏是我的代碼:

tb = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(tb); 


    tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    viewPager = (ViewPager) findViewById(R.id.viewPager); 

    viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 

    viewPagerAdapter.addFrags(new Albums(), "Albums"); 
    viewPagerAdapter.addFrags(new Tracks(), "Tracks"); 
    viewPagerAdapter.addFrags(new Artists(), "Artists"); 

    viewPager.setAdapter(viewPagerAdapter); 
    tabLayout.setupWithViewPager(viewPager); 

這裏是堆棧跟蹤:

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.davda.musicmain, PID: 32662 
       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.davda.musicmain/com.example.davda.musicmain.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.TabLayout.setupWithViewPager(android.support.v4.view.ViewPager)' on a null object reference 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2702) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2788) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1503) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6209) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.TabLayout.setupWithViewPager(android.support.v4.view.ViewPager)' on a null object reference 
        at com.example.davda.musicmain.MainActivity.onCreate(MainActivity.java:35) 
        at android.app.Activity.performCreate(Activity.java:6745) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2788)  
        at android.app.ActivityThread.-wrap12(ActivityThread.java)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1503)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        at android.os.Looper.loop(Looper.java:154)  
        at android.app.ActivityThread.main(ActivityThread.java:6209)  
        at java.lang.reflect.Method.invoke(Native Method)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  
D/AppTracker: App Event: crash 
Application terminated. 
+0

發表您的XML請 –

+0

好吧我加入XMLS – Pedo

+0

發佈XML佈局和onCreate方法 –

回答

1

請參閱該代碼 1 。檢查setContentView()你的xml佈局是否正確在哪個xml中你有vi必須放置的ewpager,tablayout。 2.檢查標籤佈局的id,viewpager。

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

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 


    tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    viewPager = (ViewPager) findViewById(R.id.viewPager); 
    viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 

    viewPagerAdapter.addFragment(new CallLogFragment(), "Call Log"); 
    viewPagerAdapter.addFragment(new MissedCallFragment(), "Missed Call"); 
    viewPagerAdapter.addFragment(new ReceivedCallFragment(), "Received Call"); 
    viewPagerAdapter.addFragment(new OutgoingCallFragment(), "Outgoing Call"); 

    viewPager.setAdapter(viewPagerAdapter); 
    tabLayout.setupWithViewPager(viewPager); 

} 
+0

不,這不是一個問題,這些都是正確的。 – Pedo

+0

你最近的問題是什麼? –

+0

那我不知道 – Pedo

2

只要將TabLayout標記以外的<include>標記。

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <include 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     layout="@layout/toolbar_layout" 
     /> 

    <android.support.design.widget.TabLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:id="@+id/tabLayout" 
     app:tabMode="scrollable" 
     app:tabGravity="center"/> 

</android.support.design.widget.AppBarLayout> 
+0

沒有@Akash它給了我運行時的異常,你必須實現OnFragmentInteractionListener – Pedo

+0

@Pedo添加你的錯誤,並提到你在哪一行出錯。 –

+0

好的,我在編輯問題 – Pedo

相關問題