我有主类扩展MapActivity,如下所示:
public class main extends MapActivity {
private MapView mapView;
......//something
public MapView getmapView() {
return mapView;
}
........//something
}
为什么我无法访问另一个类中的getmapView()方法,比如
MapView mv=main.getMapview()
答案 0 :(得分:1)
您将访问静态方法的语法与访问实例(即非静态)方法的语法混淆。
您希望main
类的每个实例拥有自己的MapView
对象,还是希望所有main
个对象共享一个MapView
?
如果您希望main
类的每个实例拥有自己的MapView
实例,则需要在getmapView()
的实例上调用main
方法class,而不是类本身的名称:
main myObject = new main();
MapView mv=myObject.getmapView();
如果您希望所有main
个对象共享一个MapView
,那么您的getmapView()
方法和mapView
成员本身需要声明为{{ 1}} ...
static
...然后您可以使用已发布的代码行调用静态public class main extends MapActivity {
private static MapView mapView;
......//something
public static MapView getmapView() {
return mapView;
}
......//something
}
方法:
getmapView()
进一步阅读:请参阅Java教程中的this article以获得进一步说明。
答案 1 :(得分:0)
fisrt,如果您想使用主类名称访问您的方法,您的方法应该是静态方法,然后您可以执行以下操作:
MapView mv=main.getMapview();
如果你想在没有静态方法的情况下使用它,你应该将主类的一个实例传递给另一个类。
如果你想使用静态方法,那么试试这个:
public class Main extends MapActivity {
private static MapView mapView;
......//something
public static MapView getmapView() {
if(mapView == null)
mapView = new MapView();
return mapView;
}
........//something
}
在你的第二堂课中你可以简单地使用它:
MapView mv=Main.getMapview();