1

緯度と経度の文字列値を別のクラスに送信したいのですが、特別な意図を持って使用する方法について少し混乱しています。

これが私のコードです:

Intent i = new Intent(getApplicationContext(), PlacesMapActivity.class);

//Sending data to another Activity
String latitude = Double.toString(placeDetails.result.geometry.location.lat);
String longitude = Double.toString(placeDetails.result.geometry.location.lng);
i.putExtra("user_lat", latitude);
i.putExtra("user_lng", longitude);

startActivity(i);

このように文字列値を取得しようとすると正しいですか?

// Getting intent data
Intent i = getIntent();

// Users current geo location
String user_lat = i.getStringExtra("user_latitude");
String user_lng = i.getStringExtra("user_longitude");

ご意見をお聞かせください。ありがとう。

4

2 に答える 2

2

あなたの質問によると、はい、データActivityを別のデータに渡すのは正しい方法ですがname、データの入力と取得の引数は同じであることを覚えておく必要があります。

また、これを行う 2 番目の方法は、getExtras()メソッドを使用することです。データを取得する 2 番目のアクティビティで:

// Getting intent data
Intent i = getIntent();
Bundle extras = i.getExtras();

// Users current geo location
if(extras != null) { // Check if extras were found
   String user_lat = extras.getString("user_latitude");
   String user_lng = extras.getString("user_longitude");
}

両方の方法の違いは次のとおりです。

  • getStringExtra()String指定された名前が見つからない場合、メソッドは null を返します
  • getExtras()エクストラが見つからない場合、メソッドは null を返します
于 2013-02-10T08:35:45.450 に答える
2

余分な in put と in get には同じ名前を使用する必要があります。たとえば、 putuser_latで get しようとするとuser_latitude、これは明らかに機能しません。そうでなければ、私には問題ないように見えます。

値を直接入力できることに注意してください。doubleに変換する必要はありませんString。それらを元に戻すには、 を使用しますgetDoubleExtra

于 2013-02-10T07:22:29.220 に答える