【问题标题】:ABS + IntelliJ IDEA: unable to start activityABS + IntelliJ IDEA:无法开始活动
【发布时间】:2013-03-31 22:34:50
【问题描述】:

this tutorial 之后,我在 IntelliJ IDEA 中的 Android 项目中添加了 Maven、ABS 和 AndroidAnnotations。起初我一直在为DEX/cannot access android.support.v4.app.FragmentActivity 异常而苦苦挣扎,并且似乎使用以下配置来修复它:

现在我收到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

Logcat 输出:

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

我用apktool反编译了APK,这里是$ 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();
    }
}

【问题讨论】:

  • 告诉我们你的CalendarActivityTabsFragmentActivity的第108行
  • 感谢您的快速回复,我在问题中添加了第 108 行程序,这里是CalendarActivity
  • 嗯,第 108 行实际上是 newTab.fragment = Fragment.instantiate(this, newTab.clss.getName(), newTab.args);
  • 这里是full tree的apktool解包---没有.smali与support-v4 lib相关的文件,是不是说明jar没有打包到app中?

标签: android jar intellij-idea actionbarsherlock


【解决方案1】:

问题很基本:我试图在标签中输入FragmentActivity 而不是FragmentHere isABS组相关讨论。

【讨论】:

    猜你喜欢
    • 2015-10-21
    • 2018-03-12
    • 2023-04-03
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多