2013-11-07 6 views
0

У меня была ListActivity, где, когда я нажал одну кнопку, я начал называть другой ListActivity. Теперь я должен изменить эти ListActivities на ListFragments. Я делаю это, чтобы раздуть макет:Запустить фрагмент из фрагмента

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    /**Inflate the layout for this fragment*/ 
    return inflater.inflate(R.layout.recent_calls, container, false); 
} 

И начать намерение, теперь, как я фрагмента, я делаю это:

CallDetailActivity Fragment_detail = new CallDetailActivity(); 
     FragmentManager fm = getFragmentManager(); 
     FragmentTransaction transaction = fm.beginTransaction(); 
     transaction.replace(R.id.recent_calls, Fragment_detail); 
     transaction.addToBackStack(null); 
     transaction.commit(); 

Мой вопрос, где я поставил R.id.recent_calls в замене, Я обращаюсь к идентификатору FrameLayout того же макета, который я инициализировал с помощью onCreateView. Это нормально? Или был бы другой способ заменить фактический макет другим при использовании фрагментов? что-то вроде намерения для активистов.

UPDATE--

У меня ошибку на .replace, как это показывает мне "Метод замены (INT, фрагмент) в типе fragmenttransaction не применяется для аргументов (интермедиат, CallDeateilActivity) "

UPDATE 2--

<FrameLayout 
android:id="@+id/recent_calls" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbarStyle="outsideOverlay"/> 

<TextView 
    android:id="@android:id/empty" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Call log is empty" 
    android:gravity="center" 
    android:textAppearance="?android:attr/textAppearanceLarge"/> 

+0

Вы должны держать одну раскладку как корень/родителя и использовать идентификатор этой точки зрения, чтобы заменить фрагмент –

+0

ваш код выглядит отлично. – Raghunandan

+0

Я обновил сообщение с ошибкой – masmic

ответ

1

Кажется, что вы смешали фрагменты из библиотеки поддержки и фрагменты из собственного андроида.

Вы должны выбрать, какой мин. версию sdk, которую вы хотите поддержать, и только потом решить, какие фрагменты использовать.

Мой вопрос: где я помещаю R.id.recent_calls вместо этого, я звоню в идентификатор FrameLayout того же макета, который я инициализировал с помощью onCreateView. Это нормально?

Я предпочитаю использовать больше ООП - вы можете создать один контроллер, который обрабатывает переводы и т. Д. Из вашего фрагмента посылает обратный вызов для переключения фрагментов.

Проверить этот вопрос тоже: Fragment add or replace not working

Смежные вопросы