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