2014-01-05 120 views
2

所以我得到了这个问题。我试图做一些简单的操作栏tabs.Showhow我得到NullPointerException,我不知道如何解决它。这里有一些代码:Android .setViewPager返回NullPointerException

MainActivity.java

public class MainActivity extends FragmentActivity { 
    ViewPager Tab; 
    TabPagerAdapter TabAdapter; 
    ActionBar actionBar; 
    PagerSlidingTabStrip tabs; 

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

     tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); 
     Tab = (ViewPager) findViewById(R.id.pager); 
     TabAdapter = new TabPagerAdapter(getSupportFragmentManager()); 

     Tab.setAdapter(TabAdapter); 
     tabs.setViewPager(Tab); //line 27 where the error appears 

     tabs.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
      @Override 
      public void onPageSelected(int position) { 

       actionBar = getActionBar(); 
       actionBar.setSelectedNavigationItem(position); 
      } 
     }); 
    } 
} 

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <com.astuetz.PagerSlidingTabStrip 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="48dip" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".MainActivity" /> 

</RelativeLayout> 

这里也是错误日志:

01-05 08:30:20.576: E/AndroidRuntime(19913): FATAL EXCEPTION: main 
01-05 08:30:20.576: E/AndroidRuntime(19913): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hiddensofia/com.example.hiddensofia.MainActivity}: java.lang.NullPointerException 
01-05 08:30:20.576: E/AndroidRuntime(19913): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2463) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at android.app.ActivityThread.access$600(ActivityThread.java:162) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at android.os.Looper.loop(Looper.java:158) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at android.app.ActivityThread.main(ActivityThread.java:5751) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at java.lang.reflect.Method.invokeNative(Native Method) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at java.lang.reflect.Method.invoke(Method.java:511) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at dalvik.system.NativeStart.main(Native Method) 
01-05 08:30:20.576: E/AndroidRuntime(19913): Caused by: java.lang.NullPointerException 
01-05 08:30:20.576: E/AndroidRuntime(19913): at com.astuetz.PagerSlidingTabStrip.notifyDataSetChanged(PagerSlidingTabStrip.java:200) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at com.astuetz.PagerSlidingTabStrip.setViewPager(PagerSlidingTabStrip.java:182) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at com.example.hiddensofia.MainActivity.onCreate(MainActivity.java:27) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at android.app.Activity.performCreate(Activity.java:5165) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1103) 
01-05 08:30:20.576: E/AndroidRuntime(19913): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2419) 

这里是我的适配器:

TabPagerAdapter.java

public class TabPagerAdapter extends FragmentStatePagerAdapter { 
    public TabPagerAdapter(FragmentManager fm) { 
     super(fm); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public Fragment getItem(int i) { 
     switch (i) { 
     case 0: 
      //Fragement for Stories Tab 
      return new Stories(); 
     case 1: 
      //Fragment for Legends Tab 
      return new Legends(); 
     case 2: 
      //Fragment for Multimedia Tab 
      return new Multimedia(); 

     case 3: 
      //Fragment for Books Tab 
      return new Books(); 
     } 
     return null; 

    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 4; //No of Tabs 
    } 
} 

感谢提前的帮助!

+0

由于您的适配器中没有数据导致错误.. – Riser

+0

我应该在我的适配器中放入什么数据?我编辑了它的代码。 – Artley

回答

8
public CharSequence getPageTitle(int position) { 

      if (position == 0) 
      { 
       return "Stories"; 
      } 
      if (position == 1) 
      { 
       return "Legends"; 
      } 
      if (position == 2) 
      { 
       return "Multimedia"; 
      } 
      if (position == 3) 
      { 
       return "Books"; 
      } 
      return null; 
     } 
+0

谢谢,它的工作! – Artley

+0

不客气。 – speedsir

5

您需要在PagerAdapter中覆盖getPageTitle()并提供您的PagerSlidingTabStrip可以获得的标题。

相关问题