相关疑难解决方法(0)

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
查看次数

使用ActionBarCompat的ProgressBar的NullPointerException

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

例外:

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

android android-support-library android-actionbar-compat

7
推荐指数
1
解决办法
3315
查看次数

在WebView加载时在Action Bar上添加加载微调器?

我正在开发一个Android应用程序.这是使用webview呈现html页面,但在页面加载时它保持空白.我想在操作栏中添加一个加载微调器,以便用户知道某些内容正在加载而且不是空白.

请任何人都可以指导我如何做到这一点.

我现有的代码 -

package com.pranavsethi.dpsrkp;

import android.annotation.TargetApi;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.DownloadListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class Achievements extends Activity{

    private WebView mWebView; 

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webvew_client_layout);
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);


        //For web view 
        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true); //enable javascript
        mWebView.getSettings().setBuiltInZoomControls(true);  //enable zoom
        mWebView.getSettings().setDisplayZoomControls(false);
        mWebView.getSettings().setLoadWithOverviewMode(true);  
        mWebView.getSettings().setUseWideViewPort(true);   
        mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);   
        mWebView.setScrollbarFadingEnabled(true);   
        mWebView.setDownloadListener(new DownloadListener() {
            @Override
            public void …
Run Code Online (Sandbox Code Playgroud)

android webview

2
推荐指数
1
解决办法
7188
查看次数