Подтвердить что ты не робот

FragmentActivity вызывает ClassNotFoundException

Я только что использовал Android SDK Manager для обновления Android SDK Tools до версии 17 и Android Compatiblity до версии 7. Теперь программа, с которой я запускалась в течение многих лет, вылетает при запуске.

Усугубляя проблему, я создал новый пустой проект, добавил android-support-v4.jar в путь сборки и изменил Activity на FragmentActivity и все. Теперь он падает.

Сообщение об ошибке:

java.lang.ClassNotFoundException: com.example.test.TestActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.test-2.apk]

Код:

package com.example.test;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class TestActivity extends FragmentActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

Все остальное, включая манифест, не изменяется от значений по умолчанию. Любая помощь очень ценится!

Изменить: манифест включен ниже:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="9" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".TestActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>
4b9b3361

Ответ 1

Оказывается, это проблема с Android SDK Tools r17. Ранее я использовал метод, приведенный в учебнике, по адресу:

http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/

Однако это больше не работает. Вместо этого все, что мне нужно было сделать, это щелкнуть правой кнопкой мыши по моему проекту в Eclipse и выбрать "Инструменты Android" → Добавить библиотеку поддержки...

Выполнение этого означает, что больше не нужно переходить на путь сборки Java и нажать "Добавить внешние JAR..."

Большое спасибо eMich за это решение: Проблема с Jar файлом с ADT r17

Ответ 2

У меня была такая же проблема, и ни один из ответов, которые я нашел в stackoverflow, не решил мою проблему. После нескольких часов (нескольких) проб и ошибок я решил свою проблему, настроив путь сборки моего проекта. В Eclipse щелкните правой кнопкой мыши проект > Build Path > Configure Build Path..., на вкладке Order and Export, отметьте Android Private Libraries, нажмите OK. После этого очистите проект и повторите попытку.

Я решил эту проблему, сравнив мой проект с другим (вновь созданным) проектом, который может работать как ожидалось. Я сравнивал каждую конфигурацию и AndroidManifest.xml из них.

Надеюсь, это вам тоже поможет:)

ОБНОВЛЕНИЕ Другое решение: используя ANT

Я нашел другой способ решить эту проблему: используя ANT. Мой друг столкнулся с той же проблемой, но исправление пути сборки не решило его проблемы. Я не знаю, было ли это потому, что мы используем другую версию IDE, другую версию ADT или другую операционную систему (я использую GNU/Linux). И затем я предложил ему использовать ANT, а не IDE.

Сначала настройте проект (создайте build.xml), выполнив android update project -p <project-dir> -n <project-name> для каждого проекта (включая проекты библиотеки). А затем из основного каталога проекта выполните ant debug для сборки, ant installd для установки и запустите приложение.

Странная вещь, как только он преуспел в этом пути, он даже может скомпилировать с помощью IDE снова, без ANT вообще.

Ответ 3

Я предполагаю, что активность фрагментов указана в манифесте правильно? Здесь мой основной класс FragmentActivity в манифесте:

    <activity android:name=".Polling" android:label="@string/app_name"
        android:windowSoftInputMode="stateHidden">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Ответ 4

выберите проект в Проводнике пакетов > Щелкните правой кнопкой мыши > Инструменты Android > Исправить свойства PRoject а также Попробуйте Project > Clean

Затем запустите.

Ответ 5

Я получил

 java.lang.NoClassDefFoundError: com.android.example.SupportFragment
    at com.android.example.SupportFragmentActivity.onCreate()

в PopupMenu

SupportFragment extends SherlockFragment implements PopupMenu.OnMenuItemClickListener
...
    @Override
    public boolean onMenuItemClick(android.view.MenuItem item) {
        return onOptionsItemSelected(item);
    }

при попытке сделать приложение api 17 совместимым с api 8, единственным признаком была ошибка logcat выше, поэтому убедитесь, что все импортированные классы поддерживаются, если вы получили эту ошибку.

Ответ 6

Такая же проблема была решена с помощью Doing Build path- > Configure Build path- > order and export- > Check Добавить частные библиотеки- > ok.

Затем очистите проект.

Сделано решение большой проблемы.

Ответ 7

Я также получил ту же проблему и разрешил ее следующим образом. Если по какой-то причине у вас есть UNCHECKED для частных библиотек из пути сборки, просто добавьте банку Androidv-4 в путь сборки и включите (проверьте) ее на вкладке "Заказ и экспорт"

Ответ 8

  • Удалите что-нибудь lib о v7 или v4. Переместите свой Android-проект, Alt + Enter, нажмите android, посмотрите lib: убедитесь, что нет ничего о v7 или v4 lib
  • добавить v4 lib
  • чистый проект
  • снова запустить

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

если вы удалите v7, будет ошибка со стилями... вы можете посмотреть это

enter image description here