2015-05-24 42 views
0

這裏是基本的錯誤描述(在底部充分說明)Android的工作室 - ViewPager麻煩

試圖調用虛擬方法無效 android.support.v4.view.ViewPager.setAdapter(android.support。 v4.view.PagerAdapter)' on null object引用

at mViewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));

(代碼相關抽屜和工具欄被移除)

MainActivity.java

//variables 
    private ViewPager mViewPager; 
    private SlidingTabLayout mSlidingTabLayout; 

//onCreate 

    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_appbar); 

    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager())); 

    mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.tabs); 
    mSlidingTabLayout.setViewPager(mViewPager); 

} 

//PagerAdapter 

    public class MyPagerAdapter extends FragmentPagerAdapter { 
    String[] tabs; 

    public MyPagerAdapter(FragmentManager fm) { 
     super(fm); 
     tabs = getResources().getStringArray(R.array.tabs); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     MyFragment myFragment = MyFragment.getInstance(position); 
     return myFragment; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return tabs[position]; 
    } 

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

//MyFragment 

    public static class MyFragment extends Fragment { 
    private TextView textView; 

    public static MyFragment getInstance(int position) { 
     MyFragment myFragment = new MyFragment(); 
     Bundle bundleArgs = new Bundle(); 

     bundleArgs.putInt("position", position); 
     myFragment.setArguments(bundleArgs); 
     return myFragment; 
    } 

//OnCreateView 

@Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View layout = inflater.inflate(R.layout.fragment_my, container, false); 
     textView = (TextView) layout.findViewById(R.id.position); 
     Bundle bundleValues = getArguments(); 
     if(bundleValues!=null){ 
      textView.setText("The page currently selected is" + bundleValues.getInt("position")); 
     } 
     return layout; 
    } 

activity_main.xml中

<android.support.v4.widget.DrawerLayout 
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:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<LinearLayout 
    android:id="@+id/LinearLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="com.company.name.mskv4.MainActivity"> 

    <include 
     android:id="@+id/app_bar" 
     layout="@layout/app_bar" /> 

    <com.piserve.geejo.mskv4.tabs.SlidingTabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    </com.piserve.geejo.mskv4.tabs.SlidingTabLayout> 

    <com.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
    /> 

</LinearLayout> 

<fragment 
    android:id="@+id/fragment_navigation_drawer" 
    android:name="com.piserve.geejo.mskv4.NavigationDrawerFragment" 
    android:layout_width="@dimen/nav_drawer_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:layout="@layout/fragment_navigation_drawer" 
    tools:layout="@layout/fragment_navigation_drawer" /> 
</android.support.v4.widget.DrawerLayout> 

fragmentmy.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/position" 
android:layout_width="match_parent" android:layout_height="match_parent" 
android:textColor="@color/color_primary_text" 
android:textSize="20sp" 
android:gravity="center" 
android:text="The page number is 1"> 

</TextView> 

的strings.xml

<resources> 
<string name="app_name">MSK v4</string> 
<string name="title_activity_main">MyServiceKart</string> 

<string-array name="tabs"> 
    <item>Search</item> 
    <item>All</item> 
    <item>Featured</item> 
</string-array> 
</resources> 

更多錯誤說明

了java.lang.RuntimeException:無法啓動活動 ComponentInfo {com.company.name。 mskv4/com.company.name.mskv4.MainActivity}: java.lang.NullPointerException:At引誘到一個空對象引用調用虛擬方法無效 android.support.v4.view.ViewPager.setAdapter (android.support.v4.view.PagerAdapter)'

+0

以前在LogCat中有什麼嗎? –

+0

這個? 1644-1644/com.company.name.mskv4 E/AndroidRuntime:致命例外:主 進程:com.company.name.mskv4,PID:1644 java.lang.RuntimeException:無法啓動活動ComponentInfo {com.piserve。 geejo.mskv4/com.company.name.mskv4.MainActivity}:java.lang.NullPointerException:試圖調用虛擬方法'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter) '在空對象引用 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) – George

+0

任何人都可以提供幫助嗎? – George

回答

-1

你試圖把這些代碼onResume方法?

@Override 
protected void onResume(){ 
    super.onResume(); 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager())); 
    mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.tabs); 
    mSlidingTabLayout.setViewPager(mViewPager); 
}