ActionBarSherlock - Стиль содержит ключ с неправильной записью - PullRequest
20 голосов
/ 13 марта 2012

Я пытаюсь использовать 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

Я думаю, что это может быть связано с этим вопросом: Чтение новых атрибутов темы в более старомПлатформа но я не знаю, как ее решить.

Есть предложения?Спасибо!

1 Ответ

46 голосов
/ 14 марта 2012

Это потому, что вы используете атрибуты темы, которых не было на платформе, на которой вы запускаете приложение. Несмотря на добавляемый гигантский красный журнал ошибок, это скорее предупреждение, поскольку оно не влияет на другие атрибуты. Более новые атрибуты никогда не читаются на старых платформах.

Связанный вопрос от меня был моей попыткой не требовать, чтобы ABSv4 использовал зеркальные атрибуты.

Если вы действительно хотите избавиться от ошибки, вы можете создать два набора ваших стилей. Один в values/ для панели действий совместимости и один в values-v14/, которые используют префиксные атрибуты для собственной панели действий.

И пожалуйста, пожалуйста, пожалуйста, пожалуйста не используйте maxSdkVersion. Вместо этого используйте targetSdkVersion.

...