Невозможно разрешить FragmentActivity на Android 2.3.3 с пакетом совместимости v4 - PullRequest
4 голосов
/ 12 октября 2011

Я создаю простое приложение hello world, чтобы узнать о пакете совместимости Android.Я могу заставить приложение работать на эмуляторе 3.2, но когда я запускаю его на эмуляторе 2.3.3, я получаю

10-12 11:36:14.474: WARN/dalvikvm(469): Unable to resolve superclass of Lcom/example/MyActivity; (11) 
10-12 11:36:14.564: WARN/dalvikvm(469): Link of class 'Lcom/example/MyActivity;' failed 
10-12 11:36:14.564: DEBUG/AndroidRuntime(469): Shutting down VM 
10-12 11:36:14.584: WARN/dalvikvm(469): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
10-12 11:36:14.624: ERROR/AndroidRuntime(469): FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example/com.example.MyActivity}: java.lang.ClassNotFoundException: com.example.MyActivity in loader dalvik.system.PathClassLoader[/data/app/com.example-1.apk]

Так что, очевидно, он не может найти FragmentActivity (который является суперcom.example.MyActivity).Я просто не знаю почему.

Некоторые вещи, на которые стоит обратить внимание:

1) Я следую учебным пособиям на http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/, что не очень тщательно.

2) Я почти уверен, что правильно встраиваю пакет совместимости в APK с maven.Я установил флягу в свой локальный репозиторий maven и собираюсь в зависимости от этого.Я думаю, что если бы я не встраивал его правильно, он не работал бы на эмуляторе 3.2.

3) Я пытался строить с IntelliJ и плагином maven-compiler-plugin.Тот же результат.

Любая помощь будет принята с благодарностью.Спасибо.

РЕДАКТИРОВАТЬ ... Вот манифест

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11" />
<uses-permission android:name="android.permission.INTERNET" />

<application android:label="@string/app_name" android:icon="@drawable/icon">
    <activity android:name=".MyActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".TutViewerActivity"
              android:label="@string/app_name" >
    </activity>
</application>
<uses-sdk android:minSdkVersion="7" />

и определение MyActivity

public class MyActivity extends FragmentActivity implements TutListFragment.OnTutSelectedListener

Ответы [ 3 ]

4 голосов
/ 01 декабря 2011

У меня была та же проблема, и проблема была в том, что пакет совместимости не был включен должным образом. Исключение является неоднозначным, так как оно говорит, что не может найти MyActivity, но полная трассировка стека покажет FragmentActivity, которое он не может связать. Проверьте область и убедитесь, что в вашем хранилище есть правильная версия, и она действительно включена во время сборки.

Если у вас все еще есть проблема, попробуйте включить ваш pom.xml здесь.

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

У меня была такая же проблема, пакет совместимости не был должным образом встроен в apk. Для этого вы можете использовать следующие шаги:

С developer.android.com:

Чтобы добавить одну из библиотек в ваш проект Android:

In your Android project, create a directory named libs at the root of your project (next to src/, res/, etc.)
Locate the JAR file for the library you want to use and copy it into the libs/ directory.

For example, the library that supports API level 4 and up is located at <sdk>/extras/android/support/v4/android-support-v4.jar.
Add the JAR to your project build path.

In Eclipse, right-click the JAR file in the Package Explorer, select Build Path > Add to Build Path.
0 голосов
/ 02 июня 2013

Добавьте следующее к импорту MyActivity:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;

Даже если вы не используете эти классы.

...