NoClassDefFoundError в FragmentMapActivity - PullRequest
3 голосов
/ 07 февраля 2012

Я видел этот вопрос часто задаваемый, но ни одно из предложенных решений, кажется, не работает для меня.Я получаю

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);

Наконец, это то, что моя папка Libraries в JavaИнструмент Build Path выглядит следующим образом: libraries

Я действительно бился головой об стену на этом.Любая помощь будет оценена.

Ответы [ 3 ]

3 голосов
/ 07 мая 2012

Это немного поздно, но у меня возникла та же проблема, и я мог, по крайней мере, решить "java.lang.NoClassDefFoundError:".В свойствах проекта -> путь сборки Java -> библиотеки я включил android-support-v4.jar из пути Android SDK.Эта библиотека была доступна во время компиляции, но не во время выполнения.Вам необходимо скопировать этот jar-файл из пути sdk в расположение библиотек приложения, чтобы эта библиотека статически добавлялась в ваше приложение и могла быть найдена во время выполнения.надеюсь это поможет.Это решение я нашел после долгих поисков в StackOverFlow.Её ссылка. Попытка использовать DialogFragments через v4-совместимость приводит к NoClassDefFoundErrors

1 голос
/ 18 июня 2012

Оказывается, проблема связана с изменением версий Android.

Более подробную информацию и исправление можно найти http://www.wiseappsllc.com/homepage/android-dev-tips

0 голосов
/ 13 марта 2012

У меня была такая же проблема, затем я решил ее, проверив путь сборки проекта. Там у меня было две банки с картами. Я удалил один в библиотеках, теперь он работает нормально. Просто проверьте, что это может работать.

...