0

I've a custom viewpager , I'm using it for making tabs in my application . this is my code;

    private TabLayout tabLayout;
    private ViewPager viewPager;
private void setupViewPager(ViewPager viewPager) {
        Fragment_Mashaghel fragmnetMashaghel=new Fragment_Mashaghel();

    Bundle bundle = new Bundle();
    Fragment_Cars stock=new Fragment_Cars();
    bundle.putString("type","stock");
    stock.setArguments(bundle);



    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(fragmnetMashaghel, getString(R.string.mashagahel));
    adapter.addFragment(stock, getString(R.string.stock));

    viewPager.setAdapter(adapter);
}

class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

this is my fragment :

public class Fragment_Cars extends Fragment {
View v;

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
Bundle b = getActivity().getIntent().getExtras();
    forWhat=b.getString("type");

I get null pointer exception in this line :

b.getString("type");

What is the problem ? how can I fill my bundle and set my arguments to fragment ?

2

2 Answers 2

1

You have to use getArguments() instead of extras from activity's intent.

Bundle b = getArguments();

Full code

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Bundle b = getArguments();
    forWhat = b.getString("type");
}

Documentation: https://developer.android.com/reference/android/app/Fragment.html#getArguments()

Sign up to request clarification or add additional context in comments.

Comments

0

In your Fragment Class use getArguments() instead of getExtras(). For example you can try the following:

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    String forWhat = getArguments().getString("type");
}

Hope this helps.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.