简体   繁体   中英

Why is the fragment not opening in Navigation drawer?

My MainActivity.java contains

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        switch (item.getItemId())
        {
            case R.id.calendar:
                fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.main_container,  new Calender());
                fragmentTransaction.commit();
                getSupportActionBar().setTitle("Calender");
                item.setChecked(true);
                break;
           // drawer.closeDrawers();
        }
        return true;
    }
});

and my Calender.java contains

public class Calender extends android.support.v4.app.Fragment{
    Activity a;
    CalendarView calendar;
    public Calender() {
        // Required empty public constructor
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)  {
        // Inflate the layout for this fragment
        a = new Activity();
        a.setContentView(R.layout.fragment_calender);

        initializeCalendar();
        return inflater.inflate(R.layout.fragment_calender, container, false);

    }

    public void initializeCalendar() {

        calendar = (CalendarView) a.findViewById(R.id.calendar);
        // sets whether to show the week number.
        calendar.setShowWeekNumber(false);
        // sets the first day of week according to Calendar.
        // here we set Monday as the first day of the Calendar
        calendar.setFirstDayOfWeek(2);
        //The background color for the selected week.
        calendar.setSelectedWeekBackgroundColor(getResources().getColor(R.color.green));
        //sets the color for the dates of an unfocused month.
        calendar.setUnfocusedMonthDateColor(getResources().getColor(R.color.transparent));
        //sets the color for the separator line between weeks.
        calendar.setWeekSeparatorLineColor(getResources().getColor(R.color.transparent));
        //sets the color for the vertical bar shown at the beginning and at the end of the selected date.
        calendar.setSelectedDateVerticalBar(R.color.darkgreen);
        //sets the listener to be notified upon selected date change.
        calendar.setOnDateChangeListener(new OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(CalendarView view, int year, int month, int day) {
                Toast.makeText(a.getApplicationContext(), day + "/" + month + "/" + year, Toast.LENGTH_LONG).show();
            }
        });

    }
}

is there any problem with my fragment? or is it in main activity? please help asap.The app opens but where i try to click on the calender button, nothins shows up.

Why do you have an instance of activity in your fragment? Change your onCreateView to:

public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View view = inflater.inflate(R.layout.content_main, parent, false);
    calendar = (CalendarView) view.findViewById(R.id.calendar);
    return view;
}

and then in onViewCreated method do this:

initializeCalendar();

make sure the id of your calendar view in content_main is calendar.

If you use Navigation Architecture Component , then you don't have to manually connect your fragments to your drawer MenuItem. The system will automatically tie you MenuItem to specific fragment If the id of the MenuItem in your menu/xyz_menu.xml matches the id of the destination in navigation/xyz_nav.xml , the NavController can then navigate to that destination.

Follow the correct steps mentioned in the official documentation : https://developer.android.com/guide/navigation/navigation-ui#Tie-navdrawer

Note : They have a sample app linked to the same article which you can refer.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM