2017-10-02 4 views
0

以下の例のように新しいフラグメントを作成するときにオブジェクトを直接設定するのが良い方法か、常にオブジェクトをParcelableにしてインテントを渡すべきか知りたいですか?オブジェクトをアンドロイドに直接設定するよりもParcelableを使用する方が良いですか?

パブリッククラスサンプルはフラグメントのいずれかの場合には{

private Object obj1; 

public static sample newInstance(Object obj) { 
    sample fragment = new sample(); 
    fragment.setObj1(obj); 
    return fragment; 
} 

public void setObj1(Object obj1) { 
    this.obj1 = obj1; 
} 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
    return super.onCreateView(inflater, container, savedInstanceState); 
} 

}

を拡張し、一方が他方より優れている理由を誰かが私にその理由を与えることができれば、それが役に立つでしょうか?

+1

キーが重複する可能性のための定数を宣言し、HTTPS ://stackoverflow.com/questions/37765613/why-use-bundle-to-pass-data-to-fragment – zvone

答えて

1

はい、すべてのParcelablesでBundleを使用してsetArgumentsを使用する必要があります。

フラグメントを再作成すると、フラグメントにアクセスできるのはgetArguments()であり、すべてのローカル変数はnull(プリミティブの場合はデフォルト)になります。どこへ行く

方法は、あなたのnewInstanceに

public static sample newInstance(String obj) { 
    sample fragment = new sample(); 
    Bundle args = new Bundle(); 
    args.putString(STRING_PARAM_KEY, obj); 
    fragment.setArguments(args); 
    return fragment; 
} 

です次に、あなたのonCreateView

obj1 = getArguments().getString(STRING_PARAM_KEY); 

にちょうどあなたのクラスで

static final String STRING_PARAM_KEY = "string_param_key"; 
+0

ありがとう、マルコス! – OkDroid

関連する問題