Android에서 FragmentManager로 작업하는 데 유용한 디자인 패턴


10

조각으로 작업 할 때 조각에 대한 작업을 정의하는 정적 메서드로 구성된 클래스를 사용하고 있습니다. 주어진 프로젝트 FragmentActions에 대해 다음과 유사한 메소드를 포함 하는 클래스가있을 수 있습니다 .

public static void showDeviceFragment(FragmentManager man){
    String tag = AllDevicesFragment.getFragmentTag();

    AllDevicesFragment fragment = (AllDevicesFragment)man.findFragmentByTag(tag);

    if(fragment == null){
        fragment = new AllDevicesFragment();
    }

    FragmentTransaction t = man.beginTransaction();
    t.add(R.id.main_frame, fragment, tag);

    t.commit();
}

일반적으로 응용 프로그램 화면 당 하나의 방법이 있습니다. 작은 로컬 데이터베이스 (보통 SQLite)로 작업 할 때 이와 같은 작업을 수행하므로 비슷한 워크 플로가있는 조각에 적용했습니다. 그래도 결혼하지 않았습니다.

Fragments API와 인터페이스하기 위해 애플리케이션을 어떻게 구성했으며 어떤 디자인 패턴이 적용됩니까?


1
왜 모든 종류의 조각을 보여주는 하나의 클래스가 있습니까? Fragment 클래스 내부의 정적 메소드가 아니어야합니까?
Piotr

답변:


3

허용되는 패턴은 커스텀 프래그먼트 클래스 내에 팩토리 메소드를 갖는 것입니다 (일반적으로 newInstance ()라고하지만 딜러 선택). 따라서 조각 클래스는 다음과 같아야합니다.

public class MyFragment extends Fragment
{
    public static MyFragment newInstance()
    {
        MyFragment newFragment = new MyFragment();
        // add any bundle arguments here if needed
        return newFragment;
    }
    // rest of fragment class...
}

그런 다음 프래그먼트를 생성하여 백 스택에 추가하면 다음과 같이됩니다.

MyFragment 조각 = 새로운 MyFragment ();

'new'키워드 대신 팩토리 메소드를 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.