다음 this tutorial IntelliJ IDEA의 Android 프로젝트에 Maven, ABS 및 AndroidAnnotations를 추가했습니다. 처음에 나는 DEX/cannot access android.support.v4.app.FragmentActivity 예외 고투, 다음과 같은 구성으로 문제를 해결할 것으로 보인다했습니다ABS + IntelliJ IDEA : 활동을 시작할 수 없습니다.
을 지금 내가 java.lang.RuntimeException: Unable to start activity
오류를 받고 있어요.
매니페스트 :
이<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ru.erarta.erarta"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application android:label="@string/app_name"
android:theme="@style/Theme.Sherlock"
android:icon="@drawable/ic_launcher"
android:name=".Erarta">
<activity android:name=".TabsFragmentActivity"
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=".DayActivity_" />
<activity android:name=".CalendarActivity"/>
<activity android:name=".AboutActivity"/>
<activity android:name=".EventActivity"/>
<activity android:name=".PermanentExhibitionActivity"/>
<activity android:name=".MediaActivity"/>
<activity android:name=".MapActivity"/>
<activity android:name=".TypesActivity" android:label="Типы событий"/>
<!-- uses-library android:name="com.google.android.maps" /-->
</application>
</manifest>
주요 활동 선언 :
public class TabsFragmentActivity extends SherlockFragmentActivity
implements TabHost.OnTabChangeListener
로그 캣 출력 : 여기 apktool
로 APK를 디 컴파일 한
04-09 16:45:48.614: ERROR/AndroidRuntime(26562): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.erarta.erarta/ru.erarta.erarta.TabsFragmentActivity}: java.lang.ClassCastException: ru.erarta.erarta.CalendarActivity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1872)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4385)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: ru.erarta.erarta.CalendarActivity
at android.support.v4.app.Fragment.instantiate(Fragment.java:384)
at ru.erarta.erarta.TabsFragmentActivity.onTabChanged(TabsFragmentActivity.java:108)
at ru.erarta.erarta.TabsFragmentActivity.initialiseTabHost(TabsFragmentActivity.java:73)
at ru.erarta.erarta.TabsFragmentActivity.onCreate(TabsFragmentActivity.java:51)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1836)
... 11 more
가 $ find . | grep support
입니다 :
./smali/android/support
./smali/android/support/v4
./smali/android/support/v4/app
./smali/android/support/v4/app/Watson$OnCreateOptionsMenuListener.smali
./smali/android/support/v4/app/Watson$OnOptionsItemSelectedListener.smali
./smali/android/support/v4/app/Watson$OnPrepareOptionsMenuListener.smali
./smali/android/support/v4/app/Watson.smali
./smali/com/actionbarsherlock/internal/view/View_HasStateListenerSupport.smali
는 TabsFragmentActivity.java:108 주위에 코드입니다 :
public void onTabChanged(String tag) {
TabInfo newTab = this.mapTabInfo.get(tag);
if (mLastTab != newTab) {
FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();
if (mLastTab != null) {
if (mLastTab.fragment != null) {
ft.detach(mLastTab.fragment);
}
}
if (newTab != null) {
if (newTab.fragment == null) {
newTab.fragment = Fragment.instantiate(this,
newTab.clss.getName(), newTab.args);
ft.add(R.id.realtabcontent, newTab.fragment, newTab.tag);
} else {
ft.attach(newTab.fragment);
}
}
mLastTab = newTab;
ft.commit();
this.getSupportFragmentManager().executePendingTransactions();
}
}
'CalendarActivity'와'TabsFragmentActivity'의 108 행을 보여주세요. – WarrenFaith
답장을 보내 주셔서 감사합니다. 질문에 108 번 절차를 추가했으며 여기에 ['CalendarActivity'] (https://gist.github.com)가 있습니다./cfr/5345763) – Cfr
ehm, 108 행은 실제로'newTab.fragment = Fragment.instantiate (this, newTab.clss.getName(), newTab.args); ' – Cfr