4

Android 互換パッケージについて学ぶために、単純な Hello World アプリを作成しています。アプリを 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) maven を使用して、互換性パッケージを APK に正しくビルドしていると確信しています。jar をローカルの 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
4

3 に答える 3

4

私も同じ問題を抱えていましたが、問題は互換パッケージが適切に含まれていなかったことです。MyActivity が見つからないという例外はあいまいですが、完全なスタック トレースでは、リンクできない FragmentActivity が示されます。スコープを確認し、正しいバージョンがリポジトリにあり、ビルド時に実際に含まれていることを確認してください。

この問題が解決しない場合は、ここに pom.xml を含めてみてください。

于 2011-12-01T00:10:42.393 に答える
1

私は同じ問題を抱えていました.apkに互換性パッケージが正しく組み込まれていませんでした。これを実現するには、次の手順を使用できます。

developer.android.comから:

ライブラリの 1 つを 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.
于 2012-06-29T13:19:36.573 に答える
0

MyActivity のインポートに以下を追加します。

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

それらのクラスを使用していなくても。

于 2013-06-02T12:15:53.050 に答える