2014-02-19 171 views
14
02-19 11:49:17.369: E/AndroidRuntime(4209): java.lang.NoClassDefFoundError: com.slidingmenus.fragments.HomeFragment 
02-19 11:49:17.369: E/AndroidRuntime(4209):  at com.slidingmenus.MainActivity.displayCategoryView(MainActivity.java:242) 
02-19 11:49:17.369: E/AndroidRuntime(4209):  at com.slidingmenus.MainActivity.onCreate(MainActivity.java:121) 

試圖在堆棧溢出中建議的每一個步驟,但他們沒有幫助。AppCompat和片段不能正常工作

它的工作原理沒有一個錯誤在4.0+但在2.3.x版本的設備其給予java.lang.NoClassDefFoundError在

line 242: fragment = new HomeFragment(); 

我從片段進口:

import android.app.Fragment; 
import android.app.FragmentManager; 

和我使用:

FragmentManager fragmentManager = getFragmentManager(); 
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit(); 

這裏是我的家片段:

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class HomeFragment extends Fragment {   
    public HomeFragment(){} 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

      View rootView = inflater.inflate(R.layout.layout_main_fragment,container, false); 

      return rootView; 
    } 
} 

花了整個早上已經試圖解決這個問題。仍然沒有運氣。任何幫助,高度讚賞。

感謝

回答

21

您應該使用Fragment從支持庫。

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 

你還需要使用getSupportFragmentManager()因爲你正在使用AppCompat您的活動必須擴展ActionbarActivity

FragmentManager fragmentManager = getSupportFragmentManager(); 

更新:

ActionBarActivity不贊成使用AppCompatActivity從支持庫。不要忘記將您的支持庫更新到最新版本。

+0

現在您需要使用AppCompatActivity進行擴展。 'ActionBarActivity'已被棄用。 –

+0

當然你需要擴展appcompact活動 – Raghunandan

1

我面臨着同樣的問題,並通過進口支持庫解決它,並使用

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 

相反

import android.app.Fragment; 
import android.app.FragmentManager; 
1

試試這個代碼 導入:

import android.support.v4.app.Fragment; 

而且使用

Fragment fragment = new HomeFragment(); 
    android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.layout.layout_main_fragment, fragment).commit();