2

In my xml snippet there is a ToolBar in which I try to add a button to the left of the text but an error occurs while executing the code

java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.widget.Toolbar.setNavigationIcon(android.graphics.drawable.Drawable)' on a null object reference

Code

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

    drawerLayout = getActivity().findViewById(R.id.Drawer);
    settings = getActivity().getSharedPreferences("Settings", getActivity().MODE_PRIVATE);
    toolbar =  getActivity().findViewById(R.id.toolbar);
    toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.menu)); //ERROR HERE


    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            drawerLayout.openDrawer(Gravity.LEFT);
        }
    });
    viewPager = getActivity().findViewById(R.id.rager);
    pagerAdapter = new MainActivity.PagerAdapter(getActivity().getSupportFragmentManager());
    viewPager.setAdapter(pagerAdapter);
    tabLayout = getActivity().findViewById(R.id.tabLayout4);
    tabLayout.setupWithViewPager(viewPager);
    tabLayout.setScrollX(tabLayout.getWidth());
    tabLayout.getTabAt(5).select();
    Date start = new Date();
    switch (start.toString().substring(0,3)) {
        case "Mon":
            viewPager.setCurrentItem(0);
            url = "Monday.txt";
            break;
        case "Tue":
            viewPager.setCurrentItem(1);
            url = "Tuesday.txt";
            break;
        case "Wed":
            viewPager.setCurrentItem(2);
            url = "Wednesday.txt";
            break;
        case "Thu":
            viewPager.setCurrentItem(3);
            url = "Thursday.txt";
            break;
        case "Fri":
            viewPager.setCurrentItem(4);
            url = "Friday.txt";
            break;
        case "Sat":
            viewPager.setCurrentItem(5);
            url = "Saturday.txt";
            break;
        default:
            viewPager.setCurrentItem(0);
            url = "Monday.txt";
            break;
    }


    SharedPreferences.Editor editor = settings.edit();
    editor.putString("Day", url);
    editor.apply();

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

An error occurs on the

        toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.menu));

line

In the main activity this code works without errors

Kos
  • 31
  • 1
  • 4

1 Answers1

0

You cant do findViewById on getActivity(). Inflate the fragment layout and do findViewById on the inflated view.

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

    View view = inflater.inflate(R.layout.fragment_znonki, container, false);

        drawerLayout = view.findViewById(R.id.Drawer);
        settings = getActivity().getSharedPreferences("Settings", getActivity().MODE_PRIVATE);
        toolbar =  view.findViewById(R.id.toolbar);
        toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.menu)); //ERROR HERE


        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                drawerLayout.openDrawer(Gravity.LEFT);
            }
        });
        viewPager = view.findViewById(R.id.rager);
        pagerAdapter = new MainActivity.PagerAdapter(getActivity().getSupportFragmentManager());
        viewPager.setAdapter(pagerAdapter);
        tabLayout = view.findViewById(R.id.tabLayout4);
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.setScrollX(tabLayout.getWidth());
        tabLayout.getTabAt(5).select();
        Date start = new Date();
        switch (start.toString().substring(0,3)) {
            case "Mon":
                viewPager.setCurrentItem(0);
                url = "Monday.txt";
                break;
            case "Tue":
                viewPager.setCurrentItem(1);
                url = "Tuesday.txt";
                break;
            case "Wed":
                viewPager.setCurrentItem(2);
                url = "Wednesday.txt";
                break;
            case "Thu":
                viewPager.setCurrentItem(3);
                url = "Thursday.txt";
                break;
            case "Fri":
                viewPager.setCurrentItem(4);
                url = "Friday.txt";
                break;
            case "Sat":
                viewPager.setCurrentItem(5);
                url = "Saturday.txt";
                break;
            default:
                viewPager.setCurrentItem(0);
                url = "Monday.txt";
                break;
        }


        SharedPreferences.Editor editor = settings.edit();
        editor.putString("Day", url);
        editor.apply();

        addListenerOnButton();
        return view;
    }
Oshan Madusanka
  • 327
  • 3
  • 9