2016-07-28 4 views
-1

Мои MainActivity.java содержитПочему фрагмент не открывается в навигационном ящике?

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; 
    } 
}); 

и мой Calender.java содержит

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(); 
      } 
     }); 

    } 
} 

есть ли проблема с моим фрагментом? или это в основной деятельности? пожалуйста, помогите asap.The приложение открывается, но где я пытаюсь нажать на кнопку календаря, nothins появляется.

+1

'a = new Activity();' ... никогда, никогда не создавайте 'new Activity()' –

+0

@Mohendra это сработало? – Heisenberg

+0

нет, http://stackoverflow.com/questions/38654653/why-is-calendar-in-navigation-drawer-not-working/38654768?noredirect=1#comment64692360_38654768 heres ссылка, где я дал весь код, пожалуйста увидишь – Mohendra

ответ

0

Почему у вас есть экземпляр активности в вашем фрагменте? Изменить onCreateView на:

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; 
} 

, а затем в onViewCreated способом сделать это:

initializeCalendar(); 

убедитесь, что идентификатор вашего просмотра календаря в content_main является календарь.

Смежные вопросы