Я использую код из этого справочника.
Когда я вставляю этот код в свою программу, я получаю сообщение об ошибке, как показано на рисунке ниже. 
Есть причины ошибки? The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, ExampleFragments)
Код из моей основной деятельности:
public void red(View view) {
android.app.FragmentManager fragmentManager = getFragmentManager();
android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExampleFragments fragment = new ExampleFragments();
fragmentTransaction.replace(R.id.frag, fragment);
fragmentTransaction.commit();
}
ExampleFragments.java
package com.example.learn.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class ExampleFragments extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.blue_pill_frag, container, false);
}
}
Здесь:
package com.example.learn.fragments;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
Ответ 1 · рейтинг 167 · Eric
Проблема здесь в том, что вы смешиваете android.support.v4.app.Fragment и android.app.Fragment. Вам нужно преобразовать все виды использования для использования библиотеки поддержки, что также означает вызов getSupportFragmentManager().
Что-то вроде этого, например:
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExampleFragments fragment = new ExampleFragments();
fragmentTransaction.replace(R.id.frag, fragment);
fragmentTransaction.commit();
Важно отметить, что вспомогательная библиотека Fragment и обычная Fragment НЕ взаимозаменяемы. Они служат той же цели, но не могут быть заменены друг другом в коде.
Ответ 2 · рейтинг 7 · whyoz
Хотя на этот вопрос, возможно, был дан ответ, следует отметить, что решение для перекрывающихся фрагментов состоит в том, чтобы получить идентификатор фрагмента (на самом деле идентификатор FrameLayout, поскольку объявление в вашем xml приведет к головным болям) со свежим экземпляром "Фрагмента":
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = new ExampleFragments();
fragmentTransaction.replace(R.id.frag, fragment);
fragmentTransaction.commit();
Я не могу сказать вам, сколько часов я провел, просматривая пост за постом без решения. Я прочитал ваш другой пост, на который есть ссылка в комментариях выше, и я также отвечу там на тот случай, если кто-то найдет это первым.
Для тех, кто получает ClassCastException, попробуйте и это. Вы можете добавить все нужные библиотеки, используя FragmentActivity вместо Fragment, и иметь getActivity().getSupportFragmentManager в своем коде, чтобы остановить ошибки в ListFragment, и вы все равно столкнетесь с проблемами с фрагментами. Документы Google не показывают вам все, и завершение кода Eclipse не всегда спасет вас ... иногда вам просто нужно исправить ошибку самостоятельно!