我正在构建一个简单的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)我很确定我正在使用maven正确地将兼容包构建到APK中。我在我的本地maven存储库中安装了jar,并依赖于它编译。我认为,如果我没有正确构建它,它将无法在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
答案 0 :(得分:4)
我遇到了同样的问题,问题是兼容性包没有被正确包含。异常是模糊的,因为它说它无法找到MyActivity,但完整的堆栈跟踪将显示它无法链接的FragmentActivity。检查范围,确保存储库中存在正确的版本,并且确实在构建时包含它。
如果您仍然遇到此问题,请尝试在此处输入您的pom.xml。
答案 1 :(得分:1)
我遇到了同样的问题,兼容性包没有正确地内置到apk中。为此,您可以使用以下步骤:
将其中一个库添加到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.
答案 2 :(得分:0)
将以下内容添加到MyActivity的导入中:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
即使您没有使用这些课程。