0

関数を持つ BaseActivity (Activity を拡張) という抽象クラスがあります。

public abstract void onLocationChanged();

他のすべてのアクティビティは、このクラスを拡張します。BaseActivity のメソッド onLocationChanged() を呼び出すと、このメソッドを実装する他のすべてのクラスが onLocationChanged() メソッドを呼び出すか、少なくとも現在スタックの一番上にあるアクティビティを呼び出すと予想されますが、1 つのアクティビティだけがメソッドであり、スタックの一番上にあるものではありません。

誰か助けてくれませんか?

ここに私のコードの関連部分があります:

abstract class BaseActivity extends FragmentActivity {
public static MyLocation location = null;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     if (location == null) {
         location = new MyLocation(this);
     }
 }
 public abstract void onLocationChanged();
}

public class MyLocation {
    BaseActivity parrent;
    public MyLocation(BaseActivity act) {          
        public MyLocation(BaseActivity act) {       
        this.parrent = act;      
    }
   public void refreshMyLocation() {
     /*location get refreshed here*/
     this.parrent.onLocationChanged();
   }
}

public class MainActivity extends BaseActivity {
 @Override
 public void onStart() {
         BaseActivity.location.refreshMyLocation();
 }

 public void onLocationChanged() {
   /*some stuff*/
 }
}
4

2 に答える 2

2

一度にすべてではなく、基本アクティビティのインスタンスで変更された場所を呼び出しています。あなたのコードがなければ、どれかわかりません。ただし、基本クラスでメソッドを宣言するだけでは、それを実装するすべてのクラスで呼び出されるわけではありません。

于 2012-07-27T15:40:47.990 に答える
0

なぜそれをしたいのか理解できません。onLocationChanged を実装し、Handler または BroadcastReceiver を介してアクティビティと通信する Service が必要だと思います。

于 2012-07-27T15:52:19.750 に答える