2016-12-05 11 views
0

私は場所を取得し、マップに表示するフラグメントを持っており、現在の場所にクローズステーションを見つけることもできます。このフラグメントは、ボタンがクリックされたときに別のフラグメントによって呼び出されました。何をしようとしているのは、ボタンがクリックされたときに、アプリケーションが場所を取得するまで「一時停止」し、その後いくつかの操作を行うときに場所が不足しているためにアプリケーションがクラッシュしないためです。フラグメントの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. 
    } 
} 

}

私はしたいと思いますこの仕事をするために私が何を変え、追加し、削除する必要があるかを知っている。

+0

解決済みです。マップを使って 'AsyncTask'を' Fragment'に移動しました。 – Capie

答えて

0

AsyncTaskどこでも必要な場所であれば、ActivityFragmentまたは他のどのクラスでも使用できます。

まず、ご希望の場所に空きがないか確認してください。

詳細はAsyncTask

+0

あなたは、ボタンを押して、場所を確認することをお勧めします。場所が見つかったら、次のフラグメントを起動しますか? – Capie

+0

はい、NULLをチェックしてから計算してください –

+0

ねえ、あなたが私に手を差し伸べるかどうか見てください。私は何千ものページをチェックしていたが、私はそれを作ることができない。私はintentServiceがこのケースの方が良いかもしれないことも読んでいました。とにかく、私は場所を取得するgooglemaps APIを訴えています。私を助けてください。 – Capie

関連する問題