我正在尝试实现自定义MapView。在我的MapActivity(名为mainmap)中,我有一个扩展MapView的内部类:
private class Lmapview extends MapView{
public Lmapview(Context context, AttributeSet attrs) {
super(context, attrs);
gestures = new GestureDetector(mainmap.this, new GestureListener(this));
}
public boolean OnTouchEvent(MotionEvent event){
return gestures.onTouchEvent(event);
}
}
我将main.xml格式化为查找内部类:
<?xml version="1.0" encoding="utf-8"?>
<view
xmlns:android="http://schemas.android.com/apk/res/android"
class="com.mondo.tbuddy.mainmap$Lmapview"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey=*****
/>
此外,在Androidmanifest.xml中,我有相应的<uses-library android:name="com.google.android.maps"/>
条目。
当我尝试运行我的应用程序时,我会在logcat中获得(除其他外):
ERROR / AndroidRuntime(14999):导致 通过:android.view.InflateException: 二进制XML文件行#2:错误 膨胀班 com.mondo.tbuddy.mainmap $ Lmapview
这是由我在logcat中找到的这个条目引起的:
ERROR / AndroidRuntime(14999):导致 by:java.lang.NoSuchMethodException: Lmapview(上下文,AttributeSet中)
如果我理解正确,我的应用程序崩溃了,因为Android说它没有为我的自定义MapView(Lmapview类)找到合适的构造函数。然而,正如您在上面所看到的,它已被定义,并且与它正在寻找的签名相匹配。
有人能给我一些见解吗?
感谢。
答案 0 :(得分:5)
在拥有超类对象之前,无法实例化内部非静态类。因此,您必须使内部类静态,或将其移动到单独的类中。