Счетчик появляется, но не исчезает

#android #android-webview #android-progressbar

#Android #android-webview #android-панель прогресса

Вопрос:

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

Код

 package com.test;


import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.Toast;

import com.parse.ParseInstallation;
import com.parse.ParsePush;
import com.parse.ParseQuery;
import com.parse.PushService;

public class MainActivity extends Activity implements OnClickListener {

    private Button push;

    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {         
            Toast.makeText(getApplicationContext(), "onReceive invoked!", Toast.LENGTH_LONG).show();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setProgressBarIndeterminateVisibility(true);
        setContentView(R.layout.activity_main);

        PushService.setDefaultPushCallback(this, MainActivity.class);




        WebView webView = (WebView) findViewById(R.id.webView1);;
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("http://www.teqez.com/xx/ ");
        webView.setWebViewClient(new WebViewClient());
webView.getSettings().setBuiltInZoomControls(false);

        push = (Button)findViewById(R.id.senPushB);
        push.setOnClickListener(this);
    }
    private class HelloWebViewClient extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView webview, String url){
            webview.loadUrl(url);
            setProgressBarIndeterminateVisibility(true);
            return true;

        }
        @Override
        public void onPageFinished(WebView webview, String url){
            super.onPageFinished(webview, url);
            setProgressBarIndeterminateVisibility(false);
        }
    }
    private class Callback extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return (true);
        }
    }



    @Override
    public void onBackPressed()
    {
        WebView webView = (WebView) findViewById(R.id.webView1);
        if(webView.canGoBack()){
            webView.goBack();
        }else{
            super.onBackPressed();
        }
    }
    @Override
    public void onPause() {
        super.onPause();

        LocalBroadcastManager.getInstance(this).unregisterReceiver(mBroadcastReceiver);
    }

    @Override
    public void onResume() {
        super.onResume();

        LocalBroadcastManager.getInstance(this).registerReceiver(mBroadcastReceiver, new IntentFilter(MyCustomReceiver.intentAction));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


    @Override
    public void onClick(View v) {

        JSONObject obj;
        try {
            obj = new JSONObject();
            obj.put("alert", "hello!");
            obj.put("action", MyCustomReceiver.intentAction);
            obj.put("customdata","My message");

            ParsePush push = new ParsePush();
            ParseQuery query = ParseInstallation.getQuery();

            // Push the notification to Android users
            query.whereEqualTo("deviceType", "android");
            push.setQuery(query);
            push.setData(obj);
            push.sendInBackground(); 
        } catch (JSONException e) {

            e.printStackTrace();
        }
    }


}
  

Макет

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <Button
        android:id="@ id/senPushB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/ic_launcher"
        android:text="Check For Updates" />

    <WebView
        android:id="@ id/webView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:clickable="true"
        android:focusable="true" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <ProgressBar
            android:id="@ id/progressBar"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

</RelativeLayout>
  

Ответ №1:

Вы не вызываете свой пользовательский частный класс

Изменить

 webView.setWebViewClient(new WebViewClient()); 
  

Для

 webView.setWebViewClient(new HelloWebViewClient());