小编Mar*_*ark的帖子

appcompat显示操作栏中的进度导致NPE

将我的SDK更新到所有最新的Android 5.0好东西后,我无法使用appcompat中ActionBar内置的进度条.我已经完成了所有常用的修复(在setContent()之前和oncreate中的超级调用之前调用supportRequestWindowFeature(),但没有任何效果.这是我正在做的事情:

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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

和堆栈跟踪:

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)
Run Code Online (Sandbox Code Playgroud)

这是在运行Android 4.4.4的Nexus 5上.应用主题继承自Theme.AppCompat.该应用程序使用Android 5.0构建,targetSDK为21.当我将setSupportProgress用于普通水平进度条时,同样的事情发生.任何帮助非常感谢.

编辑:发现问题.在android.support.v7.internal.widget.ToolbarWidgetWrapper中:

@Override
public void initIndeterminateProgress() {
    Log.i(TAG, "Progress display …
Run Code Online (Sandbox Code Playgroud)

android

12
推荐指数
2
解决办法
7510
查看次数

标签 统计

android ×1