ProgramingTip

초기 데이터를 조각에 제공하는 적절한 방법은 무엇입니까?

bestdevel 2020. 12. 5. 10:21
반응형

초기 데이터를 조각에 제공하는 적절한 방법은 무엇입니까?


그래서 재 초기화시 내 프래그먼트가 충돌하지 않을 것입니다. 내 문제는 초기화 될 때 내 조각에 데이터 목록을 사용한다는 것입니다. 따라서 데이터 목록으로 새로운 조각을 시작하는 좋은 방법은 무엇입니까? OnCreate ()에서 다른 소스에서 데이터를 가져옵니다. 아니면 접근 적절한 방법은 무엇입니까?

접근에 데이터를 공급하는 것은 데이터가 많기 때문에 접근 방식이 아닙니다.

그러니 사건을 맡아 보겠습니다 (그렇게 더 잘 이해합니다).

사용자가 버튼을 클릭하면 조각이 시작됩니다. 내가 한 일은 이런 식으로 새로운 조각을 만드는 것이 었습니다.

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    fragmentTransaction.replace(R.id.center_container, new DetailFragment(item));
    fragmentTransaction.addToBackStack(DETAIL_TAG);

    fragmentTransaction.commit();

그런 다음 내 조각에서 :

public DetailFragment(EventItem item) {
    mItem = item;
    mPlaces = Database.getContainerPlaces(getActivity()).getValidItems();
}

모든 데이터를 효율적으로 제공 할 수 있습니다. 그래서 내가 무엇을해야하니?

A : 빈 생성자로 조각을 초기화 한 다음 활동에서 setter를 사용하여 조각에 직접 데이터를 설정해야합니까? 그러나 사용자가 집을 안드로이드가 조각을 닫고 사용자가 나중에 돌아 오면 데이터가 누락되지 않았습니까?

B : 팩토리 패턴으로 프래그먼트를 초기화하고 setRetainInstance (true)를 호출하고 프래그먼트에 데이터를해야 할 때를위한 키를 제공하는 한 다음 프래그먼트가 세 번째 소스에서 onCreateView에 필요한 데이터를 가져 오도록 오도록할까요?

C : 빈 생성 만든 다음 onCreate ()에서 조각에 필요한 데이터를 가져와야합니까?

앱이 세로 모드로 잠겨 있으므로 문제는 주로 Android가 닫히고 사용자가 다시 시작할 때 개체를 유지하는 데 있습니다.


따라서 데이터 목록으로 새로운 조각을 시작하는 좋은 방법은 무엇입니까?

다음과 같이 팩토리 패턴과 "인수"를 사용하십시오 Bundle.

package com.commonsware.empublite;

import android.os.Bundle;

public class SimpleContentFragment extends AbstractContentFragment {
  private static final String KEY_FILE="file";

  protected static SimpleContentFragment newInstance(String file) {
    SimpleContentFragment f=new SimpleContentFragment();

    Bundle args=new Bundle();

    args.putString(KEY_FILE, file);
    f.setArguments(args);

    return(f);
  }

  @Override
  String getPage() {
    return(getArguments().getString(KEY_FILE));
  }
}

프래그먼트 인스턴스를 유지하는 경우 일반 setter를 사용하여 데이터 멤버에 항목을 넣는 것만으로도 있습니다. "인수" Bundle는 구성 변경의 일부로 유지되지 않는 인스턴스의 경우 사용자가 화면을 회전하는 등의 경우 설정 데이터가 유지하는 방법입니다.

참고 URL : https://stackoverflow.com/questions/10798489/proper-way-to-give-initial-data-to-fragments

반응형