私はアンドロイドアプリを作成しています。現在、場所はハードコードされています。経度と緯度はoncreateメソッドで宣言されています。私はoncreateメソッドの外で経度と緯度を取得するメソッドを作成しています。あなたが見る場所がlatitude
とlatitude
変数にハードコードされるようにonCreateメソッドのメソッドから別の変数に変数を渡す
これはOnCreateの方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
getLocation();
//Doublin Co-ordinates
final double latitude = 53.3498;
final double longitude = -6.2603;
//Getting th data
getForecast(latitude, longitude);
Log.d(Tag,"MAIN UI code running");
}
です。
また、ユーザーの電話の最後の座標を取得する方法も作成しました。これはoncreateメソッドの外です。私はoncreate
方法でlongitude
とlatitude
に、latti
、および位置特定方法でlongi
の値を代入する方法を
void getLocation() {
if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
} else {
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null){
double latti = location.getLatitude();
double longi = location.getLongitude();;
} else {
Toast.makeText(this, "Unable to get location. Please try again:", Toast.LENGTH_LONG).show();
}
}
}
。
これらの2つの変数を 'getLocation();'の前に宣言し、これら2つの変数を 'getLocation'関数に渡す必要があります。 –
'getLastKnownLocation()'に頼ることができず、実際に位置の更新を要求するか、または単一の位置更新を要求すると、 'onCreate()'で 'getForecast()'をもう呼び出せないので、これは、ロケーションのフェッチが非同期操作であるためです。代わりにその場所を受信した後にのみ呼び出す必要があります。だから、これまでの答えは少し前進するが、それほど遠くはない。 –
あなたに役立つ解決策の1つを受け入れてください –