AppCompat и Fragment не работают

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)

Пробовал все шаги, предлагаемые в переполнении стека, но они не помогли.

Он работает без ошибок в 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;
    }
 }

Прошло все утро, уже пытаясь решить это. до сих пор не повезло. Любая помощь приветствуется.

Спасибо

Ответы

Ответ 1

Вы должны использовать Fragment из библиотеки поддержки.

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

Вам также нужно использовать getSupportFragmentManager(), и поскольку вы используете AppCompat, ваша активность должна расширяться ActionbarActivity.

 FragmentManager fragmentManager = getSupportFragmentManager();

Update:

ActionbarActivity устарел использовать AppCompatActivity из библиотеки поддержки. Не забудьте обновить свой репозиторий поддержки до последней версии.

Ответ 2

Я столкнулся с той же проблемой и разрешил ее с помощью библиотеки поддержки импорта и использовал

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

Вместо

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

Ответ 3

Попробуйте этот код Импорт:

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();