0

我有一个名为 BaseActivity (extends Activity) 的抽象类,它有一个函数

公共抽象无效 onLocationChanged();

所有其他活动都扩展了这个类。当我调用 BaseActivity 的 onLocationChanged() 方法时,我希望实现此方法的所有其他类都会调用它们的 onLocationChanged() 方法或至少调用当前位于堆栈顶部的活动,但似乎只有一个活动调用方法,它不是堆栈顶部的方法。

有人可以帮忙吗?

这是我的代码的相关部分:

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

I dont understand why do you want to do that. I think you should need a Serivice that implements onLocationChanged and communicates with activities via Handler or BroadcastReceiver.

于 2012-07-27T15:52:19.750 回答