18

アプリを実行すると、インストールされてからクラッシュします。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です、これが役立つかどうかはわかりません

4

6 に答える 6

18

ここのセクションでgetSupportActionBar説明されているように、サポート ライブラリ v7 で使用できます。6. Retrieve the Action Bar

getSupportActionBar ドキュメント

于 2013-10-30T13:41:24.557 に答える
9

これはgetActionBarapi 11 のメソッドであるためですが、これを行うことができます。

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

アクティビティ クラスで、このサプレッション リントを追加します。

@SuppressLint("NewApi")
于 2013-01-02T02:15:26.660 に答える
9

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

MainActivity クラスで、getActionBar()アプリケーションで使用できないものを呼び出します。

Yourandroid:minSdkVersionは 8 (API-8) に設定されており、提供されていませんgetActionBar()(API-11 以降のみ)。

下位互換性を確保するためにActionBarSherlockを使用するか、設定android:minSdkVersionしても、API-11 より前のすべてのデバイスはターゲットになりません。

于 2012-10-19T15:47:47.213 に答える
6

私は以前にこの同じ問題に直面しました。取り替えるだけ

getActionBar()

getSupportActionBar()
于 2014-03-28T04:43:28.867 に答える
3

getActionBarこのメソッドが導入された API 11 よりも低いバージョンの電話で実行している可能性があります。API レベル 11 より前のデバイスで実行する必要がある場合は、新しい API レベルにのみ存在する呼び出しを実行しないようにするか、ActionBarSherlockAction Bar Compatiblityなどの互換性ライブラリを使用する必要があります。(これら 2 つの違いについては、このスレッドを参照してください。)

を変更するandroid:minSdkVersion="8"android:minSdkVersion="11"、作成しているすべての新しい API 呼び出しがエラーとして表示されます。これにより、注意が必要なコードの部分を簡単に見つけることができます。

于 2012-10-19T15:47:39.647 に答える
0

api < 11 の場合は、次を使用する必要があります。

getSupportActionBar();

appcompat を使用していることを確認し、これを build.gradle に追加します。19.+ がプロジェクトのターゲット バージョンである必要があります。

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

また、ナビゲーション ドロワーに invalidateOptionsMenu() を使用している場合は、代わりにこれを使用します。

supportInvalidateOptionsMenu();
于 2015-09-14T04:49:41.233 に答える