【问题标题】:ViewPager and NullObjectReference error [duplicate]ViewPager 和 NullObjectReference 错误 [重复]
【发布时间】:2017-03-06 22:59:25
【问题描述】:

我在为 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); 时总是出现这个错误行。

【问题讨论】:

    标签: android android-layout android-fragments android-viewpager android-adapter


    【解决方案1】:

    原因是你的 onCreateView.在 Fragment 中,您需要先为 Fragment 膨胀视图,然后从该视图中查找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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      相关资源
      最近更新 更多