2012-12-16 26 views
0

我要求這個acitvity作爲我的主要laucher此活動從此庫擴展SlidingActivity https://github.com/jfeinstein10/SlidingMenu。當它爲我使用片段創建的slidingmenu創建一個behindcontentview。在此主要活動中,我爲日曆創建自定義視圖,其中有自定義視圖中繪製的圖標。我想切換這些圖標,所以我在滑動菜單片段視圖中使用了開關,但是我得到一個空指針異常,當cat切換到切換器所在的片段時,log cat說它發生在列表器中。因此,我的代碼清除了在主活動中使用自定義視圖製作的日曆上的圖標,並且可以在主活動中使用代碼,但不會在切換列表程序OnCheckedChangeListener中使用代碼。SlidingMenu片段切換監聽器空指針異常

繼承人Mainactivity滑動菜單和片段上調用,以填補滑動菜單

setBehindContentView(R.layout.menu_frame); 
    FragmentTransaction t = this.getSupportFragmentManager().beginTransaction(); 
    mFrag = new ColorFragment(); 
    t.replace(R.id.menu_frame, mFrag); 
    t.commit(); 

    // customize the SlidingMenu 
    SlidingMenu sm = getSlidingMenu(); 
    sm.setShadowWidthRes(R.dimen.shadow_width); 
    sm.setShadowDrawable(R.drawable.shadow); 
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    sm.setFadeDegree(0.35f); 
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
    //sm.attachToActivity(this, SlidingMenu.SLIDING_WINDOW); 



    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    //redrawtest(); 
    // setListener(); 

我的繼承人這一主要活動XML。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<com.projects.shiftcalendar.CalendarView 
    android:id="@+id/view_month_calendar" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
</com.projects.shiftcalendar.CalendarView> 

</LinearLayout> 

這是我的片段

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle 
savedInstanceState) { 
    return inflater.inflate(R.layout.slide_menu_toggle, null); 

} 

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    Switch d = (Switch) getView().findViewById(R.id.monitored_switch1); 
    d.setOnCheckedChangeListener(this); 


} 

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 



    if(isChecked){ 

     cv.redrawCalendarClearSymbol(); 



    } 
    else { 

     cv.redrawCalendarClearSymbol(); 


     } 



    } 


} 
+0

你能不能給我完整的代碼,其實我有問題,與不同的片段滑動菜單。 –

回答

0

您寫道:

我得到的日誌貓甾體抗炎藥其發生在讀心人時,我在片段切換一個空指針異常開關是(...)[在切換列表程序OnCheckedChangeListener中不起作用。

根據您的描述,該NullPointerException異常情況發生時,你撥打:

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ 
    //...   
    cv.redrawCalendarClearSymbol(); 

好像cv爲空。 NPE的一個可能的原因是cv在創建片段時尚未實例化。假設cv是你的片段佈局的一部分,您可以在onCreateView()分配給「簡歷」的引用:

YourCustomType cv;//field 

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    ViewGroup vg = (ViewGroup) inflater.inflate(R.layout.slide_menu_toggle, null); 
    cv = (YourCustomType)vg.findViewById(R.id.yourIdForCVInTheFragmentLayout); 
    return vg; 
}