2013-05-21 6 views
1

나는 잠시 다시 질문을했다 : 나는 전체 개념 주위에 내 머리를 감싸는 정말 힘든 시간을 보내고 있었기 때문에안드로이드에 조각을 사용하는 방법 제대로

Replacing Fragments isn't working/Am I executing this the proper way?

. 과거의 Google I/O 동영상도 도움이되었지만 여전히 조각을 사용해야하는 이유는 없었습니다. 문제가 다시 발생했으며 검색 및 Google I/O 2013 비디오가 많아지면서 길에 다른 포크를 쳤습니다. 이 주제에 대한 더 전문적인 의견을 얻기 위해 현상금을 시작한 후, FrameLayouts를 사용하도록 유도했지만,이 I/O 13 비디오의 경우 19시 5 분에 video으로 표시되고 <fragment>이 표시됩니다. 누군가 내가 가진 불일치 나 오해를 해결할 수 있습니까?

내가 <fragment> 또는 <frameLayout> 사용하십니까? 보너스는 내가 원래 어디에서 왔는지 알고 싶다면 원래 질문을 봅니다.

+0

'FrameLayout'은 프래그먼트와 관련이 없으며 하나의 자식보기 그룹 만 있습니다. 당신이 보았던 예제는 아마도 조각의 컨테이너로서'FrameLayout'을 사용했을 것입니다. 이것은 나중에 다른 것으로 대체 될 수 있습니다. – tbruyelle

답변

4

여기에 2 가지 질문이 있습니다. (1) <fragment> 요소는 무엇입니까? (2) FrameLayout을 사용하여 가능한 한 최선의 방법으로 이전 질문에서 시도한 것을하고 있습니까?

나는 둘 다 대답하려고 노력할 것이다.

<fragment> XML 태그는 조각을 구현하는 또 다른 방법입니다. 리프레셔로서 Fragment은 활동의 일부와 같습니다. 그러나 Fragment은 모듈화되어 있기 때문에 모든 조각은 별도의 FragmentActivity 안에 있어야합니다. 따라서 독립 실행 형 클래스 인 fragment documentation을 다시 참조하십시오. 컨테이너로 이것을 FragmentActivity라고 생각하십시오. FragmentActivityFragment 클래스 그 자체에 대한 액세스 권한이없는 다른 가치있는 기능을 제공 FragmentActivityFragment를로드하여. 또한 조각을 동적으로 교체하여보다 유연한 사용자 환경을 제공 할 수 있습니다.

Fragment을 포함하는 기기에 넣는 방법은 수행하려는 작업에 따라 달라집니다. FragmentActivity 이를 수행하는 한 가지 방법은 <fragment> 태그를 사용하는 것입니다. 이 방법, 오히려 활동 자바 코드에서 Fragment를 선언하고 당신이 당신의 이전 질문에서와 같은 FragmentTransaction으로로드보다는 Fragment 클래스는 포함 FragmentActivity의 XML 레이아웃을 통해로드됩니다.

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"   
    android:orientation="horizontal"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent">  


    <fragment 
     android:name="com.example.android.fragments.HeadlinesFragment"     
     android:id="@+id/headlines_fragment"    
     android:layout_weight="1"    
     android:layout_width="0dp"    
     android:layout_height="match_parent" />  

</LinearLayout> 

당신은 안드로이드 문서에서 가져온 예를 들어 여기에 선언 된 조각을 볼 수 있습니다. 그 다음에 setContentView()onCreate이라면 단편은 FragmentActivty에 의해로드됩니다. 당신이 당신의 이전 예제를했던 것처럼

public class MainActivity extends FragmentActivity {  
    @Override  
    public void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.news_articles);  
    } 
} 

조각을 표시하는 다른 방법입니다. FragmentManager을 사용하면 Fragment 클래스의 새 인스턴스를 만들고 Java 코드 내에서 프로그래밍 방식으로로드 할 수 있습니다.

언제 어떤 기술이 합리적입니까? android 문서의 예제에서 볼 수 있듯이 XML 단편화 방법은 고정 단편을 사용할 때, 즉 조각을 동적으로 바꿔 넣거나 꺼내지 않을 때 유용합니다. 이는 자바 코드와 동일한 방식으로 작성한 XML 레이아웃을 편집 할 수 없기 때문입니다. 또한 XML 접근 방식을 사용하면 조각을 여러 가지 컨트롤을 위해 레이아웃 요소와 비슷하게 처리 할 수 ​​있습니다. 안드로이드 예제에서 그들은 XML 접근법을 사용하여 2 개의 fragmens를 태블릿에 나란히 표시합니다. 조각을 더 레이아웃 요소와 같이 제어함으로써, 예를 들어.layout_weight을 조정할 수 있다면 그 목적을 위해 더 나은 결과를 얻을 수 있습니다. 당신은 매우 역동적 인 UX를 디자인하는 경우

그러나, 조각 정기적으로 회전하는 ViewPager 또는 다른 기능을 말하는 것이 더 의미가 별도의 Fragment 클래스를 사용하고 필요 해짐에 따라 그 Fragments을 대체 할 수 있습니다.

이전 질문과 조각을 동적으로 교환해야 할 필요성에 따라 귀하는 해당 구현에 적합한 선택을했다고 생각합니다.

관련 문제