ActivityNotFoundException для FragmentActivity

У меня есть много простых старых приложений, основанных на действиях, в Play Store. С двух дней я пытаюсь сделать свои первые шаги с Фрагментами. Я все еще не понимаю. Я прочитал в основном все документы, блоги и руководства о фрагментах, но мое дурацкое простое тестовое приложение отказывается запускаться с ClassNotFoundException в MyActivity.

Итак, вот что я сделал до сих пор:

Начальная активность FragmentActivity с именем MyActivity:

public class MyActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        setContentView(R.layout.myactivity);
    }
}

Вот макет/myactivity.xml:

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >

    <fragment
        class="com.test.app.Table1List"
        android:id="@+id/table1list"
        android:layout_height="match_parent"
        android:layout_width="match_parent" />
</LinearLayout>

Это ListFragment с его XML-файлом:

public class Table1List extends ListFragment {

    @Override
    public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
        if (viewGroup == null) {
            return null;
        }

        return layoutInflater.inflate(R.layout.table1list, viewGroup);
    }
}

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <ListView
        android:drawSelectorOnTop="false"
        android:fastScrollEnabled="true" 
        android:id="@id/android:list"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent" />

    <TextView
        style="@style/TextViewMedium"
        android:id="@id/android:empty"
        android:text="@string/txt_noresult" />
</LinearLayout>

Назовите меня глупым, но я всегда получаю исключение ActivityNotFoundException во время запуска FragmentActivity, называемого MyActivity.

Любая помощь высоко ценится.

ИЗМЕНИТЬ:

Я взял последний пакет совместимости v4 несколько дней назад. Выдавал чистые проекты чуть ли не каждые 10 минут - не идет.

Вот манифест:

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="1"
    android:versionName="1.0"
    package="com.test.app" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="11" />

    <application
        android:hardwareAccelerated="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/txt_appname" >

        <activity
            android:label="@string/txt_appname"
            android:name="MyActivity" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

EDIT 2: вот LogCat:

Unable to resolve superclass of Lcom/test/app/MyActivity; (25)
Link of class 'Lcom/test/app/MyActivity;' failed
Shutting down VM
threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    Uncaught handler: thread main exiting due to uncaught exception
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.test.app/com.test.app.MyActivity}: java.lang.ClassNotFoundException: com.test.app.MyActivity in loader dalvik.system.PathClassLoader@44bfda38
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:4363)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.ClassNotFoundException: com.test.app.MyActivity in loader dalvik.system.PathClassLoader@44bfda38
    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)
    ... 11 more

РЕДАКТИРОВАТЬ 3: я переустановил пакет поддержки, создал новый проект с пакетом совместимости v4, урезал все до MyActivity и одного фрагмента --> та же ошибка. Я даже тестировал с предыдущим пакетом поддержки v4 (выпуск 6).

Это мои первые шаги с Fragments после почти трех лет разработки под Android (множество приложений на рынке). Кажется, что все это дело сломано.

Это дерево проекта в eclipse - любая помощь по-прежнему крайне необходима.

введите здесь описание изображения


person Harald Wilhelm    schedule 25.03.2012    source источник
comment
Пожалуйста, поделитесь файлом манифеста   -  person Rajdeep Dua    schedule 25.03.2012
comment
Также поделитесь строками из своего журнала, может пролить больше света на причину :)   -  person Carl-Emil Kjellstrand    schedule 25.03.2012
comment
Спасибо за ваши комментарии. Я добавил объявление манифеста в свой исходный пост.   -  person Harald Wilhelm    schedule 25.03.2012


Ответы (2)


Я не знаю, решит ли это вашу проблему, но, глядя на ваш снимок экрана, все кажется мне правильным, кроме пункта Referenced Libraries. Этого больше не должно быть, потому что последняя версия ADT 17 автоматически обнаруживает все jar-файлы в папке libs. Вы можете избавиться от элемента Referenced Libraries, удалив явную ссылку на банку поддержки Android из пути сборки.

У меня была очень похожая проблема, и какое-то время я был в полном тупике, пока не прочитал эту запись в блоге, в которой много информации об этой проблеме, поэтому я может быть стоит прочитать, даже если удаление Referenced Libraries не работает.

person Paul Drummond    schedule 26.03.2012

Кажется, что-то работает не так, как ожидалось. Скопируйте jar совместимости в папку libs, а затем перекомпилируйте и переупакуйте

person Rajdeep Dua    schedule 25.03.2012
comment
Пожалуйста, смотрите Edit 3 в моем исходном посте. Я сделал почти все, переустановил пакет поддержки (на самом деле предыдущий и текущий - один за другим из ваших), создал новый проект Android, урезал файлы только до одного действия и одного фрагмента. Та же ошибка. Что тут происходит? Кто-нибудь тестировал это с последними инструментами SDK, последним Eclipse и последним? - person Harald Wilhelm; 26.03.2012
comment
Проверьте этот пост в блоге — он советует делать именно то, что я написал plus.sandbox.google. com/109385828142935151413/posts/RL91VJd1yti - person Rajdeep Dua; 26.03.2012