23

マニフェストで次のように宣言した特定のアクティビティでActionBarSherlockを使用しようとしています。

<activity
        android:name=".activities.Bla"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.Sherlock" />

私のアクティビティコードは次のとおりです。

public class Bla extends SherlockFragmentActivity implements ActionBar.OnNavigationListener {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.bla);
    getSupportActionBar().setTitle("");
    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

    Context context = getSupportActionBar().getThemedContext();
    ArrayAdapter<CharSequence> list =
        ArrayAdapter.createFromResource(context, R.array.cartaz_filters, R.layout.actionbar_spinner_item);
    list.setDropDownViewResource(R.layout.actionbar_spinner_dropdown_item);
    getSupportActionBar().setListNavigationCallbacks(list, this);
  }

  @Override
  public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    return true;
  }
}

ただし、Android 2.1でこれを実行するたびに、次のエラーが発生します。

E/ResourceType(9672): Style contains key with bad entry: 0x01000000

これはこの質問に関連していると思います:古いプラットフォームで新しいテーマ属性を読んでください、しかし私はそれを解決する方法がわかりません。

助言がありますか?ありがとう!

4

1 に答える 1

52

これは、アプリケーションを実行しているプラ​​ットフォームに存在しなかったテーマ属性を使用しているためです。それが追加する巨大な赤いエラーログにもかかわらず、それは他の属性に影響を与えないので、それはもっと警告です。新しい属性が古いプラットフォームで読み取られることはありません。

私からのリンクされた質問は、ABSv4がミラーリングされた属性を使用することを要求する必要がないという私の試みでした。

エラーを本当に取り除きたい場合は、2セットのスタイルを作成できます。1つvalues/は互換性アクションバー用で、もう1つvalues-v14/はネイティブアクションバーのプレフィックス付き属性を使用します。

そして、どうぞ、どうぞ、どうぞ、使用しないmaxSdkVersionでください。targetSdkVersion代わりに使用してください。

于 2012-03-13T20:25:54.593 に答える