我已经将项目导入到eclipse中,当我尝试运行它时,会引发此异常:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.polygraf/com.polygraf.activity.Dashboard}: java.lang.ClassNotFoundException: Didn't find class "com.polygraf.activity.Dashboard" on path: /data/app/com.polygraf-1.apk
我试过清理项目,然后检查所有类名和清单是否都正确,但仍然找不到发生这种情况的原因。你能帮我一下吗?
Dashbard类:
public class Dashboard extends FragmentActivity { private static final String WELCOME_TYPE = "WELCOME_TYPE"; private static final String HELP_TYPE = "HELP_TYPE"; public static final String ADRESS_CONTENT = "ADRESS_CONTENT"; public static final String DOC_NAME = "DOC_NAME"; private Transcript mContent; private ISettableContent mListOfDocument; private String mAddress; private String mDocName; public Dashboard() { } /** Called with the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dashboard); boolean content = false; // View gc = (NoSaveStateFrameLayout) // findViewById(R.id.content_fragment); // Fragment frContent = getSupportFragmentManager().findFragmentById(R.id.content_fragment); mContent = ((IGetContent) frContent).getContent(); TranscriptSetting cc = Polygraf.getInstance().getContentSetting(); Fragment frDocumentsList = getSupportFragmentManager().findFragmentById(R.id.documents); mListOfDocument = (ISettableContent) frDocumentsList; cc.registerContent(mListOfDocument); if (getIntent().hasExtra(ADRESS_CONTENT)) { mAddress = getIntent().getStringExtra(ADRESS_CONTENT); mDocName = getIntent().getStringExtra(DOC_NAME); mContent.setAddress(mAddress, mDocName); content = true; } else if (getIntent().hasExtra(WELCOME_TYPE)) { content = true; prepareVisibilityBtnTranscript(); } else if (getIntent().hasExtra(HELP_TYPE)) { content = true; mContent.showHelp(); } if (content) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.hide(frDocumentsList); ft.commit(); // because on diferent layouts for small and large device // some views missing, so the test is inportant View contentLayout = findViewById(R.id.contentLayout); if (contentLayout != null) { contentLayout.setVisibility(View.VISIBLE); } prepareVisibilityBtnWelcome(); // cp.setContent(mContent); } cc.registerContent(mContent); // cp.setListener(cc); } . . . }
和清单文件:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17" /> <application android:name=".Polygraf" android:allowBackup="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/skeleton_app" android:theme="@android:style/Theme.Black.NoTitleBar" > <activity android:name="com.polygraf.activity.Dashboard" android:configChanges="orientation|keyboard" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <!-- This places this activity into the main app list. --> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.polygraf.activity.SettingActivity" android:label="@string/skeleton_app" /> <activity android:name="com.polygraf.activity.ContentActivity" android:label="@string/skeleton_app" > </activity> <activity android:name="com.polygraf.activity.PlayVideo" android:configChanges="orientation|keyboard" android:label="@string/skeleton_app" /> </application>
我想您正在使用Eclipse。一切正常,但是Eclipse在APK中没有包含支持包…如果您在stacktrace中查看错误,就会注意到问题的根源:“ Unable to find FragmentActivity”。或者,您可以解压缩apk并解包,您将看到不包括兼容性包类。
Unable to find FragmentActivity
要解决此问题,请右键单击您的项目,属性,构建路径,然后转到“导出”选项卡。确保Android private libraries已检查“ ”。清洁和重建应使您步入正轨…
Android private libraries