2011-08-07 13 views
1

我想刷新我的web視圖時,我按菜單按鈕。這是我的代碼:如何刷新webView? (所有我得到的都是FC的!)

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); 
     } 
    } 
} 

我在退出按鈕作品設置正確的按鈕,但每當我點擊我的刷新按鈕,我得到一個FC!我做錯了什麼?

回答

7

你已經在你的類中定義的字段

private WebView webView; 

,但你然後分配到一個局部變量來代替:

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

的解決方案是該行更改爲

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

也許有點晚,但這是我在我的onOptionsSelected裏面使用的。

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

在這種情況下,我的Webview被稱爲web。

我已更新了上面的源代碼

+0

@我不知道,如果你能得到這個決心,但是從我所看到的一切令人耳目一新,當你正在做的是重新加載默認頁面,如果你想刷新按鈕刷新最終用戶所在的實際頁面,而不是將它們帶回主頁,然後在菜單項'case R.id.reload_title中使用此代碼片段://如果ID等於3,則刷新 item.setIcon(R.drawable.ic_menu_refresh); webView.reload(); 返回true;' –