-2

ViewPagerにアダプタを設定する際に問題が発生しました。私は毎回NullObjectReferenceエラーが発生します。私のコードに何が問題なのですか?ViewPagerとNullObjectReferenceエラー

1)レイアウト:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<android.support.v4.view.ViewPager 
    android:id="@+id/view_pager" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v4.view.PagerTabStrip 
     android:id="@+id/pager_header" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" 
     android:paddingBottom="4dp" 
     android:paddingTop="4dp" /> 

</android.support.v4.view.ViewPager> 
</LinearLayout> 

2)Javaクラス:

public class FoodFragment extends Fragment { 

Toolbar toolbar; 
ViewPager viewPager; 
TabsPagerAdapter pagerAdapter; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    setRetainInstance(true); 

     ((AppCompatActivity)getActivity()) 
    .getSupportActionBar().setDisplayShowTitleEnabled(true); 
    ((AppCompatActivity)getActivity()) 
    .getSupportActionBar().setTitle(R.string.food); 
    toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); 
    toolbar.setBackgroundColor(Color.parseColor("#f6a632")); 

    pagerAdapter = new TabsPagerAdapter(getActivity() 
    .getSupportFragmentManager()); 
    viewPager = (ViewPager) getActivity().findViewById(R.id.view_pager); 
    viewPager.setAdapter(pagerAdapter); 

    return inflater.inflate(R.layout.fragment_food, container, false); 
} 
} 

viewPager.setAdapter(pagerAdapter)を呼び出すとき、私はいつもこのエラーを取得します。ライン。

答えて

0

理由は、あなたのonCreateViewです。フラグメントでは、最初にフラグメントのビューを膨張させてから、このビューからViewByIdを見つける必要があります。 次の例が表示されます。

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.fragment_food, container, false); 

    // get your view by: rootView.findViewById() 
    // for example: 
    viewPager = (ViewPager) rootView.findViewById(R.id.view_pager); 

    // do others... 

    return rootView; 
}