1

十分に単純で、

アクション バーの左上隅には、アプリケーションのデフォルト アイコンがあります。ほとんどのアプリでは、クリックするとホームページに戻ります。3.2 と 2.3.3 の 2 つのデバイスで作業していますが、他のデバイスに影響を与えずに 3.2 にアクション バーを実装しようとしています。

次のように実装されていると思います:

case android.R.id.home:            
         Intent intent = new Intent(this, ActOnThisActivity.class);            
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(intent);            
         return true;  

最後に、フラグを設定します

getActionBar().setHomeButtonEnabled(true);

これは機能するはずですが、Android に精通している人なら誰でも知っているように、これは 11 以下の API では実行できません。したがって、3.2+ では動作しますが、2.3.3 では動作しません。このメソッドが api11 以降でのみ動作するように指定する方法はありますか?

@TargetApi(11) アノテーションは機能する可能性がありますが、奇妙なエラーが発生したことに注意してください。

4

3 に答える 3

1

ActionBarCompatSDKのサンプルから見てみると、それを行う方法について公正なアイデアが得られます。

ActionBarHelper(サンプルからの)クラス内の次のコードは、さまざまなバージョンのインスタンスを決定します。

public static ActionBarHelper createInstance(Activity activity) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        return new ActionBarHelperICS(activity);
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        return new ActionBarHelperHoneycomb(activity);
    } else {
        return new ActionBarHelperBase(activity);
    }
}
于 2012-07-19T17:28:53.233 に答える
1

このメソッドが api11 以降でのみ動作するように指定する方法はありますか?

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) {
  getActionBar().setHomeButtonEnabled(true);
}
于 2012-07-20T11:24:46.967 に答える