2017-12-06 5 views
2

Fragmentsで遊んで、私のフラグメントを生成する正しい方法が不思議になりました。フラグメントgetArgument()right location

ドキュメントは、私は私の断片に引数を追加するnewInstance()パターンを使用し、言うように:

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; 
} 

しかし、その後、私はネット上で起こって見ることができるいくつかの行動があります。

ほとんどのフィールドで結果をonCreateView()方法でを入れて置くためにそれを見て:

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()方法でまったく同じものを置くためにいくつかの他の場所で見ることができます。

最後の動作は、ゲッターでを呼び出すことです。

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()に呼び出します。これは、ビューが作成される前に呼び出されるためです。あなたが計算や他のものを持っているなら、ここでそれをすることができます。グローバルバールに保存し、onCreateViewに設定します。しかし、それをする代わりに、ちょうどonCreateViewでそれをすることができます、右か?だから違いは何ですか?ロジックを分離した状態に保つのに役立ちます。初期化/ onCreateViewでビューを更新し、onCreate

Example from google's samples

に事前計算のものを行います