-1

enter image description heremy app crash when passing adapter inside the fragment

I have 3 fragments hosted inside the main fragment with tablayout with viewpagger

public class TabsPagerAdapter extends FragmentPagerAdapter {

    @StringRes
    private static final int[] TAB_TITLES =
            new int[] { R.string.tab_text_1, R.string.tab_text_2, R.string.tab_text_3 };
    private final Context mContext;

    TabsPagerAdapter(Context context, FragmentManager fm) {
        super(fm);
        mContext = context ;

    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return MealFragment.newInstance();
            case 1:
                return DrinksFragment.newInstance();
            case 2:
                return DessertFragment.newInstance();
            default:
                return null;
        }
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return mContext.getResources().getString(TAB_TITLES[position]);
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return 3;
    }
}

here is the main fragment

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        TabsPagerAdapter tabsPagerAdapter = new TabsPagerAdapter( getContext(),getChildFragmentManager());
        viewPager = (viewPager).findViewById(R.id.view_pager);
        viewPager.setAdapter(tabsPagerAdapter);
        tabs = (tabs).findViewById(R.id.tabs);
       tabs.setupWithViewPager(viewPager);

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

what I get my app compiled without error and on launch time get crashing

robo
  • 115
  • 10
  • 1
    Provide your crash logs – Stanislav Shamilov Sep 12 '19 at 20:22
  • ' 2019-09-12 23:16:37.377 18037-18037/com.example.waiterapp E/Zygote: isWhitelistProcess - Process is Whitelisted 2019-09-12 23:16:38.134 18037-18037/com.example.waiterapp E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.waiterapp, PID: 18037 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.waiterapp/com.example.waiterapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View androidx.viewpager.widget.ViewPager.findViewById(int)' on a null object reference ' – robo Sep 12 '19 at 21:23
  • 2
    Possible duplicate of [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – TofferJ Sep 12 '19 at 21:52

1 Answers1

1

You should call findViewById on a reference of the View after inflation. Change your code to this:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_home, container, false)
    TabsPagerAdapter tabsPagerAdapter = new TabsPagerAdapter( getContext(),getChildFragmentManager());
    viewPager = view.findViewById(R.id.view_pager);
    viewPager.setAdapter(tabsPagerAdapter);
    tabs = view.findViewById(R.id.tabs);
    tabs.setupWithViewPager(viewPager);
    return view;
}
Stanislav Shamilov
  • 1,746
  • 11
  • 20