3

我经常看到这个问题,但没有一个提出的解决方案似乎对我有用。我得到FragmentMapActivity中的NoClassDefFoundError

E/AndroidRuntime(897): java.lang.NoClassDefFoundError: android.support.v4.app.FragmentMapActivity$4 

当试图打开一个新的FragmentMapActivity。

代码:

public class Maps extends FragmentMapActivity { 

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

    //MapView for the lose :(
    Toast.makeText(this, R.string.map_warning, Toast.LENGTH_LONG).show(); 

    MapView mapView = (MapView)findViewById(R.id.mapview); 
    mapView.setBuiltInZoomControls(true); 
} 

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
} 
} 

R.layout.maps_simple包含:

<?xml version="1.0" encoding="utf-8"?> 
<com.google.android.maps.MapView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mapview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:clickable="true" 
    android:apiKey="<key removed for security>" 
    /> 

清单:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="osmstudios.mappingapp" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="13" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/Theme.MapApp" android:hardwareAccelerated="true"> 

    <uses-library android:name="com.google.android.maps" /> 

    <activity android:label="@string/app_name" android:name=".AppMainActivity"> 
     <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:label="@string/app_name" android:name="com.keyes.youtube.OpenYouTubePlayerActivity"></activity> 
    <activity android:label="@string/app_name" android:name=".Maps"> 
     <intent-filter> 
        <action android:name="android.intent.action.VIEW" /> 
        <category android:name="osmstudios.mappingapp" /> 
       </intent-filter> 
    </activity> 

</application> 

</manifest> 

这里是按下按钮的内码打开的FragmentMapActivity意图:

Intent intent = new Intent(ctx, Maps.class); 
startActivity(intent); 

最后,这是在Java构建路径工具我的库文件夹的样子: libraries

我已经真的打我的头靠在在这一个墙。任何帮助,将不胜感激。

回答

0

我有同样的问题,然后我通过检查项目的构建路径来解决它。我有两个地图罐。我在库中删除了一个,现在它工作正常。只需检查它可能工作。

3

这有点晚,但我有完全相同的问题,至少可以解决“java.lang.NoClassDefFoundError:”。在项目属性 - > Java构建路径 - >库中,我已经包含android sdk路径的android-support-v4.jar。这个lib在编译时可用,但在运行时不可用。您需要将这个jar从sdk路径复制到应用程序库位置,这样该库就会静态添加到您的应用程序中,并且可以在运行时找到。希望这可以帮助。我在StackOverFlow中进行大量搜索后发现了这个解决方案。她是链接。 Trying to use DialogFragments via v4 compatability causes NoClassDefFoundErrors

+0

这似乎并非是问题,但我已经重写应用程序,所以我无法测试。我感谢您花时间发布您的调查结果。 – 2012-05-07 23:02:17