[英]How to start a MapActivity from normal Activity in Android
[英]How to call a method of the MapActivity from another activity in Android?
我正在使用基于Google Maps API的Android应用程序。 我有一个refresh()
方法来刷新MapActivity
。 在我从其他活动管理POI后,我想调用refresh()
方法刷新地图。
MapActivity.refresh();
这是我的refresh()
方法:
public void refresh() {
Intent intent = getIntent();
finish();
startActivity(intent);
}
我知道如果它是static
我可以从其他活动中调用此方法。 因此,我进行了以下更改:
public static void refresh() {
Intent intent = getIntent();
finish();
startActivity(intent);
}
之后,我收到此消息:
Non-static method 'getIntent()' cannot be referenced from a static context
还有另一种刷新地图的方法吗?
阅读有用的注释后,我做了以下mapReset()
方法:
public void mapReset() {
map.clear();
addAllMarkers();
//...
}
我将此方法添加到ChildEventListener
并且在管理POI之后将重置地图。 这解决了我的问题。
poiFirebase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
//...
mapReset();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
//...
mapReset();
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
//...
mapReset();
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
//...
mapReset();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
//...
}
});
静态方法只定义一次 ,并且与类实例无关。 因此,您无法使用它修改类实例。 您可以做的是将MapActivity
作为静态成员存储在类中,例如:
public class World {
public static MapActivity myMap;
...
}
然后,您可以像这样访问地图:
World.myMap.refresh();
区别在于您将整个MapActivity视为静态成员,但是一旦调用World.myMap
,便有了一个类实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.