2016-07-29 37 views
0

以下是我對我的日曆爲什麼導航抽屜中的日曆不工作?

public class Calender extends android.support.v4.app.Fragment { 
CalendarView calendar; 
public Calender() { 
    // Required empty public constructor 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    View fragmentRootView = inflater.inflate(R.layout.fragment_calender, container, false); 

    calendar = (CalendarView) fragmentRootView.findViewById(R.id.calendar); 
    calendar.setShowWeekNumber(false); 
    calendar.setFirstDayOfWeek(2); 
    calendar.setSelectedWeekBackgroundColor(getResources().getColor(R.color.green)); 
    calendar.setUnfocusedMonthDateColor(getResources().getColor(R.color.transparent)); 
    calendar.setWeekSeparatorLineColor(getResources().getColor(R.color.transparent)); 
    calendar.setSelectedDateVerticalBar(R.color.darkgreen); 
    calendar.setOnDateChangeListener(new OnDateChangeListener() { 
     @Override 
     public void onSelectedDayChange(CalendarView view, int year, int month, int day) { 
      Toast.makeText(getApplicationContext(), day + "/" + month + "/" + year, Toast.LENGTH_LONG).show(); 
     } 
    }); 

    return fragmentRootView; 
} 

} 

代碼有一個在getApplicationContext(), 錯誤,以下是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; 
     } 
    }); 

我也爲日曆創建了一個新的xml文件,並且在主xml中使用了框架佈局。

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:background="@color/colorPrimary" 
     android:minHeight="?attr/actionBarSize" 
     app:tabGravity="fill" 
     app:tabIndicatorColor="@color/colorAccent" 
     app:tabSelectedTextColor="@color/tabTextColor" 
     app:tabTextColor="#FFF"> 

    </android.support.design.widget.TabLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/view_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_below="@+id/tab_layout"> 



    </android.support.v4.view.ViewPager> 

    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/lvPump" 
     android:layout_centerHorizontal="true" 
     android:layout_below="@+id/tab_layout" /> 




</RelativeLayout> 
<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/main_container"></FrameLayout> 

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:headerLayout="@layout/navigation_header" 
    app:menu="@menu/navigation_item"> 

</android.support.design.widget.NavigationView> 

回答

1

有一個在片段沒有方法getApplicationContext()。如果您想訪問本地環境,請寫getActivity()而不是getApplicationContext()

+0

沒有它不工作,我認爲這可能是由於容器或框架佈局,請你看看代碼 – Mohendra

+0

你reveive什麼樣的錯誤? –

+0

不完全錯誤,它只是當我點擊導航抽屜中的日曆,它什麼也沒有, – Mohendra

0

嘗試

getActivity().getApplicationContext()

,而不是隻getApplicationContext()

希望這將有助於:)

+0

我試過了,但沒有打開,應用程序運行但沒有打開時,我點擊按鈕 – Mohendra

+0

嘗試 - Toast.makeText getActivity(),day +「/」+ month +「/」+ year,Toast.LENGTH_LONG).show(); – Neo

0
Toast.makeText(getApplicationContext(), day + "/" + month + "/" + year, Toast.LENGTH_LONG).show(); 

將其更改爲

Toast.makeText(getActivity().getApplicationContext(), day + "/" + month + "/" + year, Toast.LENGTH_LONG).show(); 

理解爲什麼需要進行變化時,這裏是answer

0

覆蓋片段方法onAttach並存儲要在整個片段類中使用的活動引用。

public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    mActivity = activity; 
}