2012-10-16 50 views
0

我將Android 4.x代碼轉換爲使用ActionBarSherlock,以便我們的應用程序可以與薑餅兼容。ClassNotFoundException當使用ActionBarSherlock啓動Fragment與「newInstance」

目前爲止還不錯,但無法啓動片段的新實例。

我的主活動延伸SherlockFragmentActivity工具ActionBar.TabListener

代碼在這裏失敗,這裏的情況是0:

@Override 
    public Fragment getItem(int position) { 
     switch (position) { 
     case 0: 
      mFragmentProjects = ProjectsFragment.newInstance(position); 
      return mFragmentProjects;              
     case 1: 
      mFragmentContacts = FragmentPeople.newInstance(position, 0); 
      return mFragmentContacts;    
     } 
     return ArrayListFragment.newInstance(position); 
    } 

在哪裏的情況下爲0它應該初始化片段,但我得到這個異常: ClassNotFoundException。唯一的其他線索,我擁有的是: 「本」在PathClassLoader和「名」,它說android.app.ActionBar$TabListener

我想這已經是與TabListener或庫不正確包含/加載? 我已經清理了項目

片段ProjectsFragment擴展爲SherlockListFragment

的newInstance是相當straitforward:

static ProjectsFragment newInstance(int num) { 
    ProjectsFragment f = new ProjectsFragment(); 

    // Supply num input as an argument. 
    Bundle args = new Bundle(); 
    args.putInt("num", num); 
    f.setArguments(args); 

    return f; 
} 

回答

0

事實證明,雖然MainActivity沒有提及ActivityY,這一事實本身ActivityY沒有足夠的SherlockFragment代碼使它失敗。以不同的方式描述了這一點:

MainActitivy使用ProjectsFragment當您單擊ProjectsFragment它調用ListsActivity ListsActivity引用ItemsFragment

我不得不改變ItemsFragment夏洛克代碼之前MainActivity將工作清單上這是一個列表 。當您使用尋呼機和選項卡和片段時,似乎Java會以某種方式「向前看」。

相關問題