我正在开发一个Android应用程序,包括使用选项卡的滑动视图。 所有页面都有自己的布局,所有这些都很有效:D。
但是我想在这个视图中添加一个MapView(来自Google API),所以我需要将我的MainActivity(我唯一拥有的)扩展到MapActivity,但我不能(这里没有错):
public class MainActivity extends ActionBarActivity implements ActionBar.TabListener{
那么有没有办法从MainActivity管理我的MapView?
非常感谢:)。
(抱歉我的英语语法不好)
答案 0 :(得分:3)
通常当您偶然发现这样的问题时,您需要查看封装而不是扩展。你不能将MapView用作成员变量吗?
如果您查看MapView API,它会说明我们必须为MapView实施Android生命周期才能使其正常运行。因此,如果您使用MapView作为成员变量,则需要在主活动中覆盖以下方法以调用MapView中的匹配方法:
onCreate(Bundle)
onResume()
onPause()
onDestroy()
onSaveInstanceState(Bundle)
onLowMemory()
例如,您的活动将如下所示:
public final class MainActivity extends Activity {
private MapView mMapView;
@Override
public final void onCreate(final Bundle pSavedInstanceState) {
super(pSavedInstanceState);
this.mMapView = new MapView(this);
/* Now delegate the event to the MapView. */
this.mMapView.onCreate(pSavedInstanceState);
}
@Override
public final void onResume() {
super.onResume();
this.getMapView().onResume();
}
@Override
public final void onPause() {
super.onPause();
this.getMapView().onPause();
}
@Override
public final void onDestroy() {
super.onDestroy();
this.getMapView().onDestroy();
}
@Override
public final void onSaveInstanceState(final Bundle pSavedInstanceState) {
super.onSaveInstanceState(pSavedInstanceState);
this.getMapView().onSaveInstanceState(pSavedInstanceState);
}
@Override
public final void onLowMemory() {
super.onLowMemory();
this.getMapView().onLowMemory();
}
private final MapView getMapView() {
return this.mMapView;
}
}
答案 1 :(得分:0)
答案是否定的。如果不扩展MapActivity,就无法使用MapView。正如gulbrandr指出的那样有一个类似的问题here,这可能对任何尝试同样事情的人都有用。