Как обновить веб-представление? (Все, что я получаю, это ФК!) - PullRequest
1 голос
/ 08 августа 2011

Я хочу обновить мой веб-вид, когда я нажимаю на кнопку меню. Это мой код:

TuzzaMobileActivity.java

package com.wiseheart.TuzzaMobile;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class TuzzaMobileActivity extends Activity {
    final Activity activity = this;
    private WebView webView; 
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.main);
        WebView webView = (WebView) findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress)
            {
                activity.setTitle("Loading...");
                activity.setProgress(progress * 100);

                if(progress == 100)
                    activity.setTitle(R.string.app_name);
            }
        });

        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
            {
                // Handle the error
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url);
                return true;
            }
        });

        webView.loadUrl("http://johnwiseheart.me");
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
        case R.id.quit:
            finish();
            return true;
        case R.id.refresh:
            webView.loadUrl( "http://johnwiseheart.me" );
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }
}

У меня правильно настроены кнопки, кнопка выхода работает, но всякий раз, когда я нажимаю кнопку обновления, я получаю ФК! Что я сделал не так?

Ответы [ 2 ]

7 голосов
/ 08 августа 2011

Вы определили поле

private WebView webView;

в вашем классе, но вы вместо этого назначаете локальную переменную:

WebView webView = (WebView) findViewById(R.id.webview);

Решение состоит в том, чтобы изменить эту строку на

webView = (WebView) findViewById(R.id.webview);
1 голос
/ 24 июля 2012

Может быть, немного поздно, но это то, что я использую в моем onOptionsSelected.

case R.id.reload_title: //If the ID equals 3 , go refresh
   item.setIcon(R.drawable.ic_menu_refresh);
   web.reload();
     return true;

В этом случае мое веб-представление называется web.

Я обновил приведенный выше исходный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...