0

내 Android 앱에는 특정 흐름에 7 개의 화면이있는 것이 요구됩니다. 이제 각각의 화면에는 공통적 인 상단과 하단이 있습니다. 그래서 FragmentActivity과 7 개의 다른 Fragments을 만들도록 선택했습니다. 런타임시 조각을 FragmentActivity에 어떻게 삽입합니까? 나는이 튜토리얼 here 읽고,이 튜토리얼에 따라 한 내 주요 FragmentActivity 다음과 같은 레이아웃이 있어야합니다조각 레이아웃 사용

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <FrameLayout 
     android:id="@+id/fragment_content" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

</LinearLayout> 

을 그리고 조각 교체하려면 다음 코드를 사용한다 :

FragmentManager fm = getSupportFragmentManager(); 
Fragment fragment = fm.findFragmentById(R.id.fragment_content); 

if (fragment == null) { 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.add(R.id.fragment_content, new BasicFragment()); 
    ft.commit(); 
} 

내가 돈을 이것은 삽입됩니다,

ft.add(R.id.fragment_content, new BasicFragment()); 

R.id.fragment_contentFrameLayout입니다 : t 이해 '는 다음 줄입니다 조각으로 FrameLayout 또는 무엇?

+0

IT는'Fragment'를 식별하기 위해'tag'를 사용한다. 'Fragment'가 xml에있는 경우'id'를 사용합니다. 여기서는 그렇지 않습니다. 프로그래밍 방식으로 추가하는 것입니다 (더 나은 방법). –

답변

0

R.id.fragment_content가 FrameLayout입니까? 이것은 framelayout에 조각을 삽입 할 것인가?

내가 기억하는 것에서는 조각 레이아웃이 그 위에 놓여 있습니다. 그 아래에는 컨테이너 레이아웃에 붙이는 "스티커 부착"이라는 또 다른 레이아웃이 있습니다. 그래서 그것은 어떤 의미에서의 케이크입니다. "스티커"를 잡으려면 조각의 루트보기에서 .getParent()으로 전화하면됩니다.

아, 그리고 쉽게 찾을 수있는 태그 조각은 FragmentManager입니다 (태그 조회는 비용이 많이 들지만).

0

완구 (이 경우 귀하의 FrameLayout)와 같이 장난감 배송을 던질 수있는 것처럼보실 수 있습니다 (Fragments). 그래서 기본적으로 당신은 당신을 포함 할 환경이 필요합니다. Fragments 그리고 당신이 선택한 레이아웃이 될 수 있습니다. 여기서 뭐하는 그래서

: R.id.fragment_contentFragment하지만 FrameLayout하지 않기 때문에

Fragment fragment = fm.findFragmentById(R.id.fragment_content); 

은 잘못된 것입니다.

하지만 당신은 당신이 여기에서했던 작업을 그 자체 레이아웃 extends Fragment하는 클래스를 작성해야하고 할 수 있도록, 당신의 Fragment 용기 수 :

FragmentManager fm = getSupportFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.add(R.id.fragment_content, new BasicFragment(), tag); //add a tag to a fragment during the transaction so you could easily retrieve it later. 
ft.commit(); 

물론 당신에 대해 더 많이 이해할 수 이 페이지를 읽어 조각 :

http://developer.android.com/guide/components/fragments.html

관련 문제