私は場所を取得し、マップに表示するフラグメントを持っており、現在の場所にクローズステーションを見つけることもできます。このフラグメントは、ボタンがクリックされたときに別のフラグメントによって呼び出されました。何をしようとしているのは、ボタンがクリックされたときに、アプリケーションが場所を取得するまで「一時停止」し、その後いくつかの操作を行うときに場所が不足しているためにアプリケーションがクラッシュしないためです。フラグメントのAsyncTask
私はAsyncTaskを使うべきだと私は読んでいましたが、私はボタンでフラグメントで、またはマップでそれを使うべきかどうかわかりません。私はどんな種類の助けにも感謝します。コードが必要な場合はそれに言及し、私はそれを投稿します。
ありがとうございます!
EDIT:
私はそれを作るカント....私は読んで時間をコードするが、私は方法を見つけるいけないました。 これは私が今まで持っていたものです。
ここでは、ボタンをクリックして地図を開く前に、GPS、ネットワーク....座標を取得します。
@Override
public void onClick(View view) {
//Fragment fragment = null;
getLocation getLocation = new getLocation();
switch (view.getId()) {
case R.id.SearchButton:
getLocation.execute();
break;
}
}
その後、私はこのクラスを持っているし、ここでイムが不足しているものです....
public class getLocation extends AsyncTask<Void, Void, Void>{
protected void doInBackground(String... strings) {
}
protected void onPreExecute(String... strings){
}
protected void onPostExecute(){
Home activity = (Home) getActivity();//---> After app gets coordinates from anywhere, it launches next fragment with the map.
if(activity != null)activity.openMapFragment();
}
}
私はこれをどのように行うことができますか。?
EDIT 2:
が、私はこのより良い説明を与えることができるかどうか見てみましょう。
私がマップを扱うクラスでは、私は場所を使用します。私はGoogleのAPIサーバーに接続し、私はGoogleMap.setMyLocationEnabled(True)
とGoogleMap.getLocation()
を使用します。私が望むのは、マップフラグメントを呼び出すフラグメント上にこの位置を取得することです。私はそれを行うためにAsyncTask
を使用する必要があります知っているが、私はこのようにしようとしていたが、私はそれを動作させることはできません。
クラスのgetLocationは、AsyncTaskを拡張{
GoogleMap mMap ;
GoogleApiClient client;
Location location;
@Override
protected Location doInBackground(Location... locations) {
client = new GoogleApiClient.Builder(getActivity())
.addApi(AppIndex.API)
.addApi(LocationServices.API)
.build();
client.connect();
mMap.setMyLocationEnabled(true);
location = mMap.getMyLocation();
if(location!=null)return location;
return null;
}
protected void onPostExecute(Location location){
if(location != null){
Home activity = (Home) getActivity();
if(activity != null)activity.openMapFragment(); // Open next fragment when location is found.
}
}
}
私はしたいと思いますこの仕事をするために私が何を変え、追加し、削除する必要があるかを知っている。
解決済みです。マップを使って 'AsyncTask'を' Fragment'に移動しました。 – Capie