Ошибка 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) 

Это логарифм, не уверен, что это поможет

Используйте getSupportActionBar доступный в библиотеке поддержки v7, как описано здесь, в разделе 6. Retrieve the Action Bar getSupportActionBar 6. Retrieve the Action Bar »

Документация getSupportActionBar

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

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

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

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

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

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

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

 @SuppressLint("NewApi") 

Раньше я столкнулся с этой проблемой. Я просто заменяю

 getActionBar() 

с

 getSupportActionBar() 

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

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

Для api <11 вам необходимо использовать:

 getSupportActionBar(); 

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

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

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

 supportInvalidateOptionsMenu(); 
Intereting Posts
Использование android.jar в проекте Java – RuntimeException Stub? Для чего вы используете Android Terminal Emulator? Как запросить таблицу внешнего контента FTS4, но возвращать дополнительные столбцы из таблицы исходного контента Обновление списков изображений ListView для Android ListView с использованием AsyncTask Причины Просмотр утилизации Общий класс для AsyncTask в Android? Передайте комплексный параметр от ksoap Android до веб-службы WCF Android фронтальная камера записывает видео с 7,5 до 8,0 – setVideoFrameRate не работает – Samsung galaxy s2 Поддержка Android OpenGL ES везде? Разница между setAlpha и setImageAlpha Подключение клиента android к sails.js Android OpenGL ES искаженное изображение Использование методов пользовательских запросов с Android Использование библиотеки поддержки разработки в Eclipse Полная поддержка Android для пакетов OSGi Как объединить использование db4o для хранения данных и Lucene для индексации данных для быстрого поиска?