2016-07-28 14 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(); 
      } 
     }); 

    } 
} 

が含まれている私のフラグメントに問題があるのでしょうか?それとも主な活動にありますか?アプリは開きますが、カレンダーボタンをクリックしようとすると、何も表示されません。

+1

'a = 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でカレンダービューのIDがカレンダーであることを確認してください。

関連する問題