2016-06-21 20 views
3

私はLatLngをあるフラグメントから別のフラグメントに渡す必要があるアプリケーションを構築しています。現在のところ、私はこの方法でそれをやっています:フラグメント間にLatLngを渡す

public static LocationsFragment newInstance(LatLng latLng){ 
    LocationsFragment fragment = new LocationsFragment(); 
    Bundle bundle = new Bundle(); 
    double x = latLng.latitude; 
    double y = latLng.longitude; 
    bundle.putDouble(PATIENT_LAT, x); 
    bundle.putDouble(PATIENT_LON, y); 
    fragment.setArguments(bundle); 
    return fragment; 
} 

ご覧のとおり、私はLatLngを取り、それを2倍に分割しています。断片で私はそれを一緒に戻す必要があります。私は、シリアライズ可能なie:bundle.putSerializable(latlng)を使ってみました。しかしそれはうまくいかなかった。それを解凍しなくてもLatLngを渡す方法はありますか?これは機能しますが、できるだけ効率的にやります。

答えて

2

ここでパフォーマンスの問題はありません。単にBundleに値を2倍してから読み込むだけです。これは重い操作ではなく、これはAndroidがどのように動作するかを示しています。ブロードキャストメッセージやMessageをハンドラに送るなどの他の方法は、すべてBundleに値を入力する必要がありますが、それ以上のことはないと思います。

また、setArgumentsは、必要に応じてアプリがフラグメントを再作成するのに役立ちますが、それらの引数は引き続き存在します。動作しないパラメータを持つコンストラクタを使用した場合。

latLngSerializableとすることができます。このクラスは、シリアル化可能なインターフェイスを実装しています。しかし、あなたが本当にパフォーマンスを心配しているなら、2倍の値がより効率的になると思います。フラグメント間の引数を渡すことが問題になるような使用例は考えられませんが、

関連する問題