我有一个名为BaseActivity(extends Activity)的抽象类,它有一个函数
public abstract void 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*/
}
}
答案 0 :(得分:2)
您正在调用基本活动实例上的位置已更改,而不是同时调用所有这些位置。没有你的代码,我不知道哪一个。但是简单地在基类中声明一个方法并不意味着它将在每个实现它的类上调用。
答案 1 :(得分:0)
我不明白你为什么要那样做。我认为您应该需要一个实现onLocationChanged的Serivice,并通过Handler或BroadcastReceiver与活动进行通信。