AppCompat和Fragment无法正常工作

pra*_*sti 16 android android-appcompat android-fragments

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)
Run Code Online (Sandbox Code Playgroud)

尝试堆栈溢出中建议的每个步骤,但他们没有帮助.

它在4.0+中没有错误,但在2.3.x设备中它给出了java.lang.NoClassDefFoundError

line 242: fragment = new HomeFragment();
Run Code Online (Sandbox Code Playgroud)

我从片段导入的是:

import android.app.Fragment;
import android.app.FragmentManager;
Run Code Online (Sandbox Code Playgroud)

我正在使用:

FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
Run Code Online (Sandbox Code Playgroud)

这是我的家庭片段:

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;
    }
 }
Run Code Online (Sandbox Code Playgroud)

花了一整个上午已经试图解决这个问题.仍然没有运气.任何帮助都非常感谢.

谢谢

Rag*_*dan 22

您应该使用Fragment支持库.

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
Run Code Online (Sandbox Code Playgroud)

您还需要使用getSupportFragmentManager(),因为您使用AppCompat的活动必须扩展ActionbarActivity.

 FragmentManager fragmentManager = getSupportFragmentManager();
Run Code Online (Sandbox Code Playgroud)

更新:

ActionBarActivity不推荐使用AppCompatActivity来自支持库.不要忘记将支持存储库更新到最新版本.