Прогресс бар и обновить комбинацию веб-просмотра Android - PullRequest
0 голосов
/ 22 марта 2012

EDIT: Я использую ProgressBar для Webview, который работает нормально. Теперь я хочу обновить мой Webview, который также работает. Когда я пытаюсь их объединить, Spinner совсем не заканчивается. Это мой код:

private final Runnable m_Runnable = new Runnable()
    {
        public void run()

        {
            //Toast.makeText(WebcamsScreen.this,"in runnable",Toast.LENGTH_SHORT).show();
            doRefreshingStuff(id);
            WebcamsScreen.this.mHandler.postDelayed(m_Runnable, 20000);            
        }

    };



    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            //initialitions 

        doRefreshingStuff(id);
        this.mHandler = new Handler();

        this.mHandler.postDelayed(m_Runnable,20000);

        doRefreshingStuff(id);
    }
public void doRefreshingStuff(String id){

                setContentView(R.layout.web4);

                webView7 = (WebView) findViewById(R.id.web_4_1);

                webView7.getSettings().setJavaScriptEnabled(true);
                webView7.getSettings().setJavaScriptEnabled(true);
                progressBar = ProgressDialog.show(WebcamsScreen.this, "example", "...");
                url="my url";
webView7.setWebViewClient(new WebViewClient() {
                public boolean shouldOverrideUrlLoading(WebView view, String url1) {              
                    view.loadUrl(url1);
                    return true;
                }


              public void onPageFinished(WebView view, String url1) {
                    if (progressBar.isShowing()) {
                        progressBar.dismiss();
                    }
                }
            });
              webView7.loadUrl(url);

что я должен изменить?

1 Ответ

1 голос
/ 22 марта 2012

Похоже, что вы обновляете свой WebView каждые 20 секунд и открываете новое диалоговое окно прогресса, когда вы это делаете.Ваш код предполагает, что старый диалог прогресса уже был закрыт.Если это не так, то диалоговое окно прогресса просто осиротело и останется на дисплее навсегда.Вы, вероятно, можете это исправить, вставив этот код:

if (progressBar != null && progressBar.isShowing()) {
    progressBar.dismiss();
}

непосредственно перед строкой progressBar = ....

Но я бы не стал так исправлять ваш код.Вы делаете огромную работу, которая вам не нужна.(Например, вам не нужно перезагружать то же представление контента.) Вот моя пересмотренная версия:

private final Runnable m_Runnable = new Runnable() {
    public void run() {
        doRefreshingStuff(id);
        mHandler.postDelayed(m_Runnable, 20000);
    }
};

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        //initialitions 

    setContentView(R.layout.web4);
    webView7 = (WebView) findViewById(R.id.web_4_1);
    webView7.getSettings().setJavaScriptEnabled(true);
    webView7.getSettings().setJavaScriptEnabled(true);
    webView7.setWebViewClient(new WebViewClient() {
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            if (!mProgressBar.isShowing()) {
                mProgressBar.show();
            }
        }
        public void onPageFinished(WebView view, String url1) {
            if (mProgressBar.isShowing()) {
                mProgressBar.dismiss();
            }
        }
    });

    mProgressBar = new ProgressDialog(this);
    mProgressBar.setTitle("example");
    mProgressBar.setMessage("...");

    mHandler = new Handler();
}

protected void onResume() {
    super.onResume();
    mHandler.post(m_Runnable);
}

protected void onPause() {
    super.onPause();
    mHandler.removeCallbacks(m_Runnable);
}

public void doRefreshingStuff(String id) {
    url="my url";
    webView7.loadUrl(url);
}

Обратите внимание, что я переместил начало цикла загрузки страницы в onResume() и уничтожил циклв onPause().Возможно, вам нужна немного другая логика, но вам определенно следует как-то прекратить зацикливание, когда ваша деятельность приостанавливается или заканчивается.

...