请提供帮助:android.view.InflateException:二进制XML文件行#3:错误为类com.google.android.maps.MapView充气

请提供帮助:android.view.InflateException:二进制XML文件行#3:错误为类com.google.android.maps.MapView充气,android,maps,inflate,mapactivity,Android,Maps,Inflate,Mapactivity,我编写了Get Point应用程序()来存储GPS坐标,并导出一个KML文件,以便在Google Earth中打开。创建该应用程序是因为我需要学习Android平台 因为我是Android新手,如果我问了一个愚蠢的问题,请原谅我。:) Google标记的开发者控制台显示有一个错误,我自己无法在emulator中重现(使用Google APU、Galaxy S或Galaxy 5:( 错误消息是:android.view.InflateException:Binary XML文件行#3:error-

我编写了Get Point应用程序()来存储GPS坐标,并导出一个KML文件,以便在Google Earth中打开。创建该应用程序是因为我需要学习Android平台

因为我是Android新手,如果我问了一个愚蠢的问题,请原谅我。:)

Google标记的开发者控制台显示有一个错误,我自己无法在emulator中重现(使用Google APU、Galaxy S或Galaxy 5:(

错误消息是:android.view.InflateException:Binary XML文件行#3:error-inflating class com.google.android.maps.MapView

我正在寻找解决方案,但找不到答案:(

堆栈在这里:

 at android.view.InflateException: Binary XML file line #3: Error inflating class com.google.android.maps.MapView
 at android.view.LayoutInflater.createView(LayoutInflater.java:513)
 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
 at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
 at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
 at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
 at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
 at jv.android.getpoint.ListaCoordAdapter.getView(ListaCoordAdapter.java:29)
 at android.widget.AbsListView.obtainView(AbsListView.java:1315)
 at android.widget.ListView.makeAndAddView(ListView.java:1727)
 at android.widget.ListView.fillDown(ListView.java:652)
 at android.widget.ListView.fillFromTop(ListView.java:709)
 at android.widget.ListView.layoutChildren(ListView.java:1580)
 at android.widget.AbsListView.onLayout(AbsListView.java:1147)
 at android.view.View.layout(View.java:7035)
 at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
 at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
 at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
 at android.view.View.layout(View.java:7035)
 at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
 at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
 at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
 at android.view.View.layout(View.java:7035)
 at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
 at android.view.View.layout(View.java:7035)
 at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
 at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
 at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
 at android.view.View.layout(View.java:7035)
 at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
 at android.view.View.layout(View.java:7035)
 at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
 at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:123)
 at android.app.ActivityThread.main(ActivityThread.java:4627)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:521)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
 at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
 at com.google.android.maps.MapView.<init>(MapView.java:238)
 at java.lang.reflect.Constructor.constructNative(Native Method)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
 at android.view.LayoutInflater.createView(LayoutInflater.java:500)
 ... 39 more
Caused by: java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity.
 at com.google.android.maps.MapView.<init>(MapView.java:282)
 at com.google.android.maps.MapView.<init>(MapView.java:255)
 ... 43 more
PointView类:

public class PointView extends MapActivity {

    MapView mv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.maps);

        mv = (MapView)findViewById(R.id.mvPosicao);
        mv.setLongClickable(true);
        mv.setBuiltInZoomControls(true);

        Intent intent = getIntent();

        if (intent != null)
        {
            Bundle params = intent.getExtras();

            if (params != null) {
                Double lat = (Double) params.getDouble("latitude");
                Double lon = (Double) params.getDouble("longitude");

                markPosition (lat, lon);
            }
        }

        registerForContextMenu(mv);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu  menu) {            
        //Log.i("MYINFO", "I'm in");    
        MenuItem mi0 = menu.add(Menu.NONE, 0, 0, getString(R.string.mnVerMapa));
        mi0.setIcon(R.drawable.mapview);

        MenuItem mi1 = menu.add(Menu.NONE, 1, 1, getString(R.string.mnVerSatelite));
        mi1.setIcon(R.drawable.satelliteview);

        MenuItem mi2 = menu.add(Menu.NONE, 2, 2, getString(R.string.mnVerStreetView));
        mi2.setIcon(R.drawable.streetview);

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {       
        switch (item.getItemId()) {
        case 0:
            mv.setSatellite(false);
            break;
        case 1: 
            mv.setSatellite(true);
            break;
        case 2: 
            mv.setStreetView(true);
            break;
        }

        return true;
    }    

    public void markPosition (Double lat, Double lon){
        int latE6 = (int)(lat*1E6);
        int lonE6 = (int)(lon*1E6);

        GeoPoint point = new GeoPoint(latE6, lonE6);

        ImageOverlay io = new ImageOverlay(new GeoPoint(latE6, lonE6), R.drawable.waypoint2);

        mv.getOverlays().add(io);
        mv.getController().setCenter(point);
    }   

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}
PointView XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent">
  <com.google.android.maps.MapView       
    android:id="@+id/mvPosicao"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:enabled="true"
    android:clickable="true"
    android:apiKey="<my googlemaps key" />
</LinearLayout>

任何帮助都将不胜感激。

问题的核心在于堆栈跟踪的最底层:
地图视图只能在MapActivity的实例内部创建。
基本上,无论出于何种原因,膨胀都是从您的PointView外部发生的


jv.android.getpoint.ListaCordAdapter是您的类之一吗?从堆栈跟踪中可以看出,这是试图扩大布局的类。如果这个类是您的,它是否扩展了MapActivity?

问题的核心在堆栈跟踪的最底层:
MapView只能在MapActivity
。基本上,无论出于何种原因,通货膨胀都是从您的视点之外发生的


jv.android.getpoint.ListaCordAdapter是您的类之一吗?从堆栈跟踪中可以看出,这就是试图扩大布局的类。如果这个类是您的,它是否扩展了MapActivity?

我通过扩展MapActivity来修复它,而不是通过调用MapView的Activity类中的活动来修复它结束MapActivity而不是调用MapView的Activity类中的Activity

您的
default.properties
文件中有什么?您的
default.properties
文件中有什么?谢谢。我添加了ListAcoorAdapter类和default.properties值。ListAcoorAdapter只是ListView的新适配器,而不是MapView。我看到了这在堆栈中,但我不明白为什么?:(有没有可能得到完整的堆栈跟踪(没有“…43更多”)?可能还有另一个线索。该跟踪来自谷歌市场。我无法在我的设备/计算机中重现错误:(谢谢。我添加了ListaCordAdapter类和Default.Properties值。ListaCordAdapter只是ListView的一个新适配器,而不是MapView。我在堆栈中看到了这一点,但我不明白为什么?:(有没有可能获得完整的堆栈跟踪(没有“…43更多”)?可能还有另一个线索。这个线索来自谷歌市场。我无法在我的设备/计算机中重现错误:(
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent">
  <com.google.android.maps.MapView       
    android:id="@+id/mvPosicao"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:enabled="true"
    android:clickable="true"
    android:apiKey="<my googlemaps key" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="<package>.getpoint"
      android:versionCode="1"
      android:versionName="1.0.1">
    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

    <application android:label="@string/app_name" android:icon="@drawable/maps">
        <uses-library android:name="com.google.android.maps" />
        <activity android:name=".GetPointActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".PointView" android:configChanges="keyboard|keyboardHidden|orientation" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"/>
                </application>
</manifest>
public class ListaCoordAdapter extends ArrayAdapter<CoordToShow> {

    private List<CoordToShow> items;        
    Context context;

    public ListaCoordAdapter(Context context, int textViewResourceId, List<CoordToShow> items) {                
        super(context, textViewResourceId, items);                
        this.items = items;
        this.context = context;
    }        

    @Override        
    public View getView(int position, View convertView, ViewGroup parent) {                
        View v = convertView;                

        if (v == null) {                        
            LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);                
            **v = vi.inflate(R.layout.rowcoord, null);**                
        }                

        CoordToShow it = items.get(position);                
        if (it != null) {                        
            ImageView iv = (ImageView) v.findViewById(R.id.ivCoord);
            TextView l1 = (TextView) v.findViewById(R.id.linha1);
            TextView l2 = (TextView) v.findViewById(R.id.linha2);

            l1.setText(it.getNome());
            l2.setText(it.toString());

            if (iv != null) {         
                if (it.getTipo() == CoordToShow.PONTO)                  
                    iv.setImageResource(R.drawable.waypoint2);
                else 
                    iv.setImageResource(R.drawable.track);
            }                
        }                

        return v;        
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:paddingTop="4dip"
     android:paddingBottom="6dip"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content" android:orientation="horizontal">
    <ImageView android:src="@drawable/waypoint2" android:id="@+id/ivCoord" android:layout_width="32dp" android:layout_height="32dp"></ImageView>

     <LinearLayout
         android:id="@+id/ll2"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content" android:orientation="vertical">
         <TextView android:id="@+id/linha1"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:textAppearance="?android:attr/textAppearanceMedium" />
         <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/linha2"></TextView>
     </LinearLayout>
</LinearLayout>
target=Google Inc.:Google APIs:8