使用ActionBarCompat时出现的ProgressBar空指针异常

7
我在使用support-v7-r18的ActionBarCompat。 当尝试显示一个不定进度时,它在Galaxy S3 Android 4.1.2上工作,但在Galaxy Ace Android 2.3.3上却没有反应。 我无法理解原因。 引发异常的代码如下:
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    final ActionBarActivity activity = this;
    content = (WebView) findViewById(R.id.webContent);
    content.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            activity.setSupportProgressBarIndeterminate(true);   <=== Line 88
            activity.setSupportProgressBarIndeterminateVisibility(true);
        }
    }

异常:

FATAL EXCEPTION: main
    java.lang.NullPointerException
    at  android.support.v7.app.ActionBarActivityDelegateBase.updateProgressBars(ActionBarActivityDelegateBase.java:508)
    at android.support.v7.app.ActionBarActivityDelegateBase.setSupportProgressBarIndeterminate(ActionBarActivityDelegateBase.java:469)
    at android.support.v7.app.ActionBarActivity.setSupportProgressBarIndeterminate(ActionBarActivity.java:282)
    at MyActivity.onPageStarted(MyActivityActivity.java:88)
    at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:266)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:3687)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
    at dalvik.system.NativeStart.main(Native Method)

1
请问您能否在您发布的代码中选择第88行。 - Philipp Jahoda
抱歉,正确的代码是 "activity.setSupportProgressBarIndeterminate(true);"。 - JulienC
1个回答

16
在调用setContentView()方法之前,在onCreate()方法中添加supportRequestWindowFeature(Window.FEATURE_PROGRESS);supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);以实现进度条支持。请保留格式并包含HTML标签。

4
您需要在Android 2.3.3上添加这两个功能,以显示进度。 - JulienC
setSupportProgressBarIndeterminateVisibility(Boolean.TRUE);setSupportProgressBarIndeterminateVisibility(Boolean.TRUE); - Dori
2
当我使用supportRequestWindowFeature方法请求进度和不确定进度时,它仍然会崩溃。 - JMRboosties
1
在更现代的设备上(4.0.3+),我根本不会看到这种崩溃,但在旧设备上(特别是2.2.1和2.3.7设备),我总是会遇到这种崩溃。我甚至尝试等到Activity生命周期的onPostResume()方法来使用setSupportProgressBarIndeterminateVisibility(boolean),但仍然会发生。我不知道Honeycomb时代的设备是否会出现这种崩溃。 - Charles Madere
@JulienC,我也需要添加这两个功能来显示进度,但是在这样做时,两个进度旋转器都可见,我只想显示一个旋转器,你有什么想法吗? - coderVishal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接