После обновления моего SDK до всех последних нововведений Android 5.0 я не могу использовать индикаторы выполнения, встроенные в ActionBar в appcompat. Я выполнил все обычные исправления (move supportRequestWindowFeature() до setContent() и до супервызов в oncreate), но ничего не работает. Вот что я делаю:
public class LoginActivity extends ActionBarActivity {
protected void onCreate(Bundle savedInstanceState) {
supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
...
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
setSupportProgressBarIndeterminateVisibility(true);
}
});
} и трассировка стека:
10-18 19:38:21.053: E/AndroidRuntime(11206): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.internal.widget.ProgressBarCompat.setVisibility(int)' on a null object reference
10-18 19:38:21.053: E/AndroidRuntime(11206): at android.support.v7.app.ActionBarActivityDelegateBase.updateProgressBars(ActionBarActivityDelegateBase.java:786)
10-18 19:38:21.053: E/AndroidRuntime(11206): at android.support.v7.app.ActionBarActivityDelegateBase.setSupportProgressBarIndeterminateVisibility(ActionBarActivityDelegateBase.java:692)
10-18 19:38:21.053: E/AndroidRuntime(11206): at android.support.v7.app.ActionBarActivity.setSupportProgressBarIndeterminateVisibility(ActionBarActivity.java:327)
10-18 19:38:21.053: E/AndroidRuntime(11206): at com.myapppackage.LoginActivity$2.onClick(LoginActivity.java:82)
Это на Nexus 5 под управлением Android 4.4.4. Тема приложения наследуется от Theme.AppCompat. Приложение построено с Android 5.0, а targetSDK равно 21. Когда я использую setSupportProgress для нормального горизонтального индикатора выполнения, то самое происходит. Любая помощь очень ценится.
EDIT: Нашел проблему. В файле android.support.v7.internal.widget.ToolbarWidgetWrapper:
@Override
public void initIndeterminateProgress() {
Log.i(TAG, "Progress display unsupported");
}
Может быть, не ошибка, а функция? Панели инструментов, похоже, являются новыми ActionBars.
У меня есть копия приложения V20 appcompat на другом компьютере, поэтому я возвращаюсь к этому.