3

私のアプリは、アクションバーを使用してタイトルを設定し、ユーザーの操作に応じて変化し続けるサブタイトルを表示します。またsplitActionBarWhenNarrow、アクションバーでメニューオプションを使用して表示しています。

アプリで Android の古いバージョン (以下の API 11) を搭載したデバイスをサポートするようにするには、 を設定する 必要がありますandroid:minSdkVersion="8"が、最小 SDK バージョンを以下の 11 に設定すると、アクションバーにエラー ( Call requires API level 11 (current min is 8): android.app.Activity#getActionBar) が表示されます:

getActionBar().setTitle(record_name);
getActionBar().setSubtitle("Total: "+BigDecimal.valueOf(total).toPlainString()+"/-");

API のバージョンを確認する if 条件を追加して、これを解決しようとしました。

int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if(currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB)
{   
    //Use Actionbar to set title and subtitle etc.
    getActionBar().setTitle(record_name);
    getActionBar().setSubtitle("Total: "+BigDecimal.valueOf(total).toPlainString()+"/-");
    getActionBar().setIcon(R.drawable.ic_header);
    getActionBar().setDisplayHomeAsUpEnabled(true);

}
else
{

}

しかし、それは機能しません。まだエラーが発生しますgetActionBar()...

この問題を解決し、API が <11 の場合はアクションバーの使用を避け、API が >=11 の場合はアクションバーを使用するにはどうすればよいですか?

4

3 に答える 3

2

この警告を削除するには、使用するメソッド/ファイル/クラスが、サポートされている最小サポートより後の SDK 以降で利用可能であることを IDE に通知する必要があります。これは@TargetApi注釈を介して行われます。あなたの場合@TargetApi(Build.VERSION_CODES.HONEYCOMB)、注釈付きのメソッドまたはクラス全体。

重要:これは警告を削除するだけです。これらのメソッドが存在しないデバイスで呼び出されないようにする必要があります

于 2015-09-20T18:07:51.657 に答える
1
int currentApiVersion = android.os.Build.VERSION.SDK_INT;

現在の API バージョンを取得します。

ActionBar actionBar = getActionBar(); //from API level 11

そうであればnull、手元にアクションバーがありません。

使用することもできますgetSupportActionBar()

参照: Android API のバージョンをプログラムで取得する

http://developer.android.com/reference/android/app/Activity.html#getActionBar%28%29

だから私はするだろう:

if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) {   
    ActionBar actionBar = getActionBar(); //or SupportActionbar
    if (actionBar != null) {
        //Use Actionbar to set title and subtitle etc.
        actionBar.setTitle(record_name);
        actionBar.setSubtitle("Total: "+BigDecimal.valueOf(total).toPlainString()+"/-");
        actionBar.setIcon(R.drawable.ic_header);
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}
于 2015-09-20T14:53:30.933 に答える
1

サポート ライブラリと を使用しgetSupportActionBar()ます。このようにして、すべての API レベルで ActinBar を使用できます。詳細については、Google Android サポート ライブラリ v4 を参照してください。

于 2015-09-20T14:47:08.870 に答える