프로그래밍 언어/Android

새 Android 조각을 인스턴스화하는 모범 사례

Rateye 2021. 11. 2. 10:24
728x90
반응형
질문 : 새 Android 조각을 인스턴스화하는 모범 사례

응용 프로그램에서 새 조각을 인스턴스화하는 두 가지 일반적인 관행을 보았습니다.

Fragment newFragment = new MyFragment();

Fragment newFragment = MyFragment.newInstance();

두 번째 옵션은 정적 메서드 newInstance() 하며 일반적으로 다음 메서드를 포함합니다.

public static Fragment newInstance() 
{
    MyFragment myFragment = new MyFragment();
    return myFragment;
}

처음에는 새로운 인스턴스를 생성 할 때 유연성을 제공하기 위해 newInstance () 메서드를 오버로드 할 수 있다는 것이 주된 이점이라고 생각했습니다. 그러나 Fragment에 대해 오버로드 된 생성자를 생성하여이를 수행 할 수도 있습니다.

내가 뭐 놓친 거 없니?

한 접근 방식이 다른 접근 방식에 비해 이점은 무엇입니까? 아니면 그냥 좋은 습관입니까?

답변

Android가 나중에 Fragment를 다시 생성하기로 결정하면 Fragment의 인수가없는 생성자를 호출합니다. 따라서 생성자를 오버로드하는 것은 해결책이 아닙니다.

즉, Android에서 Fragment를 다시 만든 후 사용할 수 있도록 Fragment에 항목을 전달하는 setArguments 메서드에 전달하는 것입니다.

예를 들어, 조각에 정수를 전달하려면 다음과 같이 사용합니다.

public static MyFragment newInstance(int someInt) {
    MyFragment myFragment = new MyFragment();

    Bundle args = new Bundle();
    args.putInt("someInt", someInt);
    myFragment.setArguments(args);

    return myFragment;
}

나중에 Fragment onCreate() 다음을 사용하여 해당 정수에 액세스 할 수 있습니다.

getArguments().getInt("someInt", 0);

이 번들은 Android에서 Fragment를 다시 만든 경우에도 사용할 수 있습니다.

또한 참고 : setArguments 는 Fragment가 Activity에 연결되기 전에 만 호출 될 수 있습니다.

이 접근 방식은 Android 개발자 참조 ( https://developer.android.com/reference/android/app/Fragment.html)에도 문서화되어 있습니다.

출처 : https://stackoverflow.com/questions/9245408/best-practice-for-instantiating-a-new-android-fragment
728x90
반응형