it-swarm.com.ru

Ошибка 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, не уверен, поможет ли это

18
Guparasti

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

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

18
Muzikant

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

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

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

@SuppressLint("NewApi")
9
ademar111190

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

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

Ваш Android:minSdkVersion установлен на 8 (API-8), что не обеспечивает getActionBar() (только после API-11).

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

9
shkschneider

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

getActionBar()

с 

getSupportActionBar()
6
Hardik Joshi

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

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

3
Ted Hopp

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

getSupportActionBar();

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

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

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

supportInvalidateOptionsMenu();
0
sagits