0

状況はこれです:

  1. アクティビティAはgetLocation()クラスBからメソッドを呼び出します。

クラスBはGPS位置の取得を処理します。

2クラスBがGPS位置の取得を終了すると、アクティビティAは終了するはずです。

アクティビティAは次のように呼び出します。

B.getLocation()
this.finish()

つまり、Bからメソッドを使用して場所を取得し、それ自体を終了します。実際には、Bが場所を取得する前にAが閉じます。

AがBが終了するまで待機するように、これを正しく構成するにはどうすればよいですか?

4

2 に答える 2

1

ここのデザインは欠けています。実際、現時点ではActivity1つしかフォアグラウンドにできないため、一方のメソッドをもう一方のメソッドに呼び出すことはできません。Activityあなたの活動はを使用して通信する必要がありますIntents。動作方法は次のとおりです。

  1. Activity AActivity B使用を開始しますIntent
  2. Activity BメソッドActivity Aを使用して、場所を取得し、に返しますsetResult()
  3. Activity AActivity BそのonActivityResult()メソッドから結果を読み取ります
  4. Activity A終了します

これは、より良い実装のように感じます。実際、Activity B場所を取得するだけの場合は、それをとして簡単に実装し、ServiceにバインドできActivity Aます。お役に立てれば。

于 2012-02-28T14:45:46.393 に答える
0

基本的なJavaに精通している場合は、コールバックメカニズムを実行する必要があります。ここでは、Javaでのコールバックの概要を説明しようとしています...

//Here is you class B :

class ClassB {

interface ILocationListerner {


 void setLocations(float lat, float long);


}



ILocationListerner mLocationListener = null;


/// Here is your static method that set Listerner and call by Activity A

public void static setLocationListerner(ILocationListerner listener){

this.mLocationListener = listener;


}


//Gel loaction method.

public static void getLocation(){

////
...
////

mLocationListener.setLocation(lat,lng);





}


}// ClassB ends here


/// Activity A

class ActivityA extends Activity {


 onCreate(){


 ClassB.setLocationListerner(new ILocationListerner {

      @Override
      void setLocations(float lat, float long){

      /// do your stuff and call finish();

      }

} );

ClassB.getLocation();


}

}

}

あなたがこれを理解することを願っています...

于 2012-02-28T17:15:10.143 に答える