2017-12-06 1 views
2

Fragments을 가지고 놀면서 조각을 채우는 올바른 방법에 대해 궁금해졌습니다.조각 getArgument() 오른쪽 위치

public static ItemFragment newInstance(ItemRealm item, AnnaleModel model) { 
    ItemFragment fragment = new ItemFragment(); 
    Bundle args = new Bundle(); 
    args.putString(MyPagerAdapter.KEY_ITEM, item.getId()); 
    args.putParcelable(MyPagerAdapter.KEY_MODEL, model); 
    fragment.setArguments(args); 
    return fragment; 
} 

을하지만, 내가 인터넷에서 일어나고 볼 수있는 몇 가지 행동을있다 :

사이먼이 말하길

, 내 조각에 인수를 추가 할 newInstance() 패턴을 사용합니다.

대부분의 필드에 결과를 onCreateView() 방법 getArguments()을 넣어 넣어 그것을 보이는 :

protected String itemId; 
protected Model mModel ; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    Bundle args = getArguments(); 
    if (args == null || (!args.containsKey(MyPagerAdapter.KEY_ITEM) || !args.containsKey(MyPagerAdapter.KEY_MODEL))) { 
     Log.e("TAG", "incorrect Bundle"); 
     return null; 
    } 
    itemId = args.getString(MyPagerAdapter.KEY_ITEM); 
    mModel = args.getParcelable(MyPagerAdapter.KEY_MODEL); 
} 

내가 onCreateView() 대신 Fragment.onCreate() 방법에 똑같은 일을 넣어 다른 곳에서 볼 수 있습니다.

마지막 동작은 getter에서 을 호출하는 것입니다.

private Model getModel(){ 
    if (getArguments() != null) { 
     return getArguments().getParcelable(AnnalePagerAdapter.KEY_MODEL); 
    } 
    Log.e("Dan", "ItemFragment :: getModel (279): model==null !!"); 
    return null; 
}//I can also think about some lazyloading is needed 

질문

은 다음과 같습니다

  • 지금 어떤 패턴이 사용에 대한 합의가 있습니까 (이 3 또는 다른)?
  • 일부 문맥이 있습니까? 나는 하나 이상의 문맥을 사용해야합니까?

답변

0

게터를 사용하지 마십시오. 그것은 단지 일들을 복잡하게 만듭니다. Model 클래스에 조각 로직을 포함시키는 이유는 무엇입니까? 뷰가 생성되기 전에이 메소드가 호출되기 때문에 onCreateView()onCreate()에 대한

으로, 나는 onCreate()에서 getArguments()를 호출합니다. 그래서 계산이나 다른 것들이 있다면 여기에서 할 수 있습니다. 그것을 글로벌 항아리에 저장하고 onCreateView으로 설정하십시오. 하지만 그 대신에 onCreateView에서 할 수 있습니다. 맞습니까? 그렇다면 그 차이점은 무엇입니까? 논리를 분리 된 상태로 유지하는 데 도움이됩니다./초기화 onCreateView에서보기를 업데이트하고 onCreate

Example from google's samples

에 미리 계산을 다 할
관련 문제