여기에 2 가지 질문이 있습니다. (1) <fragment>
요소는 무엇입니까? (2) FrameLayout
을 사용하여 가능한 한 최선의 방법으로 이전 질문에서 시도한 것을하고 있습니까?
나는 둘 다 대답하려고 노력할 것이다.
<fragment>
XML 태그는 조각을 구현하는 또 다른 방법입니다. 리프레셔로서 Fragment
은 활동의 일부와 같습니다. 그러나 Fragment
은 모듈화되어 있기 때문에 모든 조각은 별도의 FragmentActivity
안에 있어야합니다. 따라서 독립 실행 형 클래스 인 fragment documentation을 다시 참조하십시오. 컨테이너로 이것을 FragmentActivity
라고 생각하십시오. FragmentActivity
가 Fragment
클래스 그 자체에 대한 액세스 권한이없는 다른 가치있는 기능을 제공 FragmentActivity
로 Fragment
를로드하여. 또한 조각을 동적으로 교체하여보다 유연한 사용자 환경을 제공 할 수 있습니다.
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
을 대체 할 수 있습니다.
이전 질문과 조각을 동적으로 교환해야 할 필요성에 따라 귀하는 해당 구현에 적합한 선택을했다고 생각합니다.
'FrameLayout'은 프래그먼트와 관련이 없으며 하나의 자식보기 그룹 만 있습니다. 당신이 보았던 예제는 아마도 조각의 컨테이너로서'FrameLayout'을 사용했을 것입니다. 이것은 나중에 다른 것으로 대체 될 수 있습니다. – tbruyelle