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

Ошибка NoSuchMethodError для getActionBar() (API-8)

когда я запускаю приложение, которое он устанавливает, но затем сбой, ecplise не говорит, что с моим кодом что-то не так. я думаю, что это проблема с моим манифестом...

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>                
                <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value="com.example.secondapp" />
        </activity>
    </application>

</manifest>

У вас есть проблемы с ребятами?

10-19 10:41:25.589: E/AndroidRuntime(10147): FATAL EXCEPTION: main
10-19 10:41:25.589: E/AndroidRuntime(10147): java.lang.NoSuchMethodError: com.example.secondapp.MainActivity.getActionBar
10-19 10:41:25.589: E/AndroidRuntime(10147):    at com.example.secondapp.MainActivity.onCreate(MainActivity.java:15)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at android.app.ActivityThread.access$1500(ActivityThread.java:123)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at android.os.Looper.loop(Looper.java:130)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at android.app.ActivityThread.main(ActivityThread.java:3835)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at java.lang.reflect.Method.invokeNative(Native Method)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at java.lang.reflect.Method.invoke(Method.java:507)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
10-19 10:41:25.589: E/AndroidRuntime(10147):    at dalvik.system.NativeStart.main(Native Method)

это logcat, не уверен, что это поможет

4b9b3361

Ответ 2

java.lang.NoSuchMethodError: com.example.secondapp.MainActivity.getActionBar

В своем классе MainActivity вы вызываете getActionBar(), который недоступен для вашего приложения.

Ваш android:minSdkVersion установлен в 8 (API-8), который не предоставляет getActionBar() (только с API-11).

Вы должны использовать ActionBarSherlock для хорошей обратной совместимости или установить android:minSdkVersion, но затем все устройства < API-11 не будет нацелен.

Ответ 3

Это потому, что getActionBar является методом api 11, но вы можете сделать это:

if (android.os.Build.VERSION.SDK_INT >= 11)
    getActionBar().setDisplayHomeAsUpEnabled(true); //example

и в классе активности добавьте это подавление Lint:

@SuppressLint("NewApi")

Ответ 4

Я столкнулся с этим же вопросом раньше. Я просто заменяю

getActionBar()

с

getSupportActionBar()

Ответ 5

Вероятно, вы работаете на телефоне, который ниже API 11, когда был введен метод getActionBar. Если вам нужно запускать на устройствах ниже уровня API 11, вам нужно будет защититься от выполнения вызовов, которые существуют только на более новых уровнях API, или использовать библиотеку совместимости, такую ​​как ActionBarSherlock или Совместимость с Action Bar. (См. этот поток для обсуждения различий между этими двумя.)

Измените android:minSdkVersion="8" на android:minSdkVersion="11", и все новые вызовы API, которые вы делаете, загорятся как ошибки. Это облегчит поиск тех частей вашего кода, которые требуют внимания.

Ответ 6

Для api < 11 вы должны использовать:

getSupportActionBar();

Algo убедитесь, что вы используете appcompat, добавьте это на build.gradle, 19. + должна быть вашей целевой версией вашего проекта.

compile 'com.android.support:appcompat-v7:19.+'

Также, если вы используете invalidateOptionsMenu() для навигационного ящика, используйте вместо этого:

supportInvalidateOptionsMenu();