2017-04-07 28 views
0

,所以我做了一個網站,該網站可以簡單地通過使用網頁流量變成移動應用程序。當我第一次安裝apk時,它工作得很好,但問題在於,網絡只是靜態的,或者它不再被加載。我怎麼刷新一個webview?

它只是打開了像我第一次安裝它相同的內容,即使我已經改變了整個網站。我不知道問題是與webview還是與android。

我已經嘗試在php中自動刷新/自動重載功能,但它只能在移動瀏覽器中工作,並沒有在我的應用程序中工作... 任何人都知道任何解決方案?

,因爲我是在android系統的深化發展是新手我會把我的主要活動的整個代碼

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

//initializing WebView 
private WebView mwebView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 



    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    //WebView 
    mwebView = (WebView) findViewById(R.id.myWebView); 
    WebSettings webSettings = mwebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    //improve webView performance 
    mwebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
    mwebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
    mwebView.getSettings().setAppCacheEnabled(true); 
    mwebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    webSettings.setDomStorageEnabled(true); 
    webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); 
    webSettings.setUseWideViewPort(true); 
    webSettings.setSavePassword(true); 
    webSettings.setSaveFormData(true); 
    webSettings.setEnableSmoothTransition(true); 


    mwebView.loadUrl("http://192.168.94.2/autorefresh/"); 
    //force links open in webview only 
    mwebView.setWebViewClient(new MyWebviewClient()); 

} 

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     super.onBackPressed(); 
    } 
} 

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

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 


    return super.onOptionsItemSelected(item); 
} 

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    if (id == R.id.nav_home) { 
     mwebView.loadUrl("http://192.168.94.2/ee1/"); 
    } 
    if (id == R.id.nav_kolam) { 
     mwebView.loadUrl("http://192.168.94.2/ee1/listkolam.php"); 
    } 
    if (id == R.id.nav_pantai) { 
     mwebView.loadUrl("http://192.168.94.2/ee1/listpantai.php"); 
    } 
    if (id == R.id.nav_transaksi) { 
     System.exit(0); 
    } 
    if (id == R.id.nav_about) { 
     System.exit(0); 

    } 
    if (id == R.id.nav_keluar) { 
     System.exit(0); 
    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 


//bikin progress dialog 
private class MyWebviewClient extends WebViewClient { 
    //ProgressDialogue 
    @Override 

    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (Uri.parse(url).getHost().equals("192.168.94.2")) { 
      //open url contents in webview 
      return false; 
     } else { 
      //here open external links in external browser or app 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(intent); 
      return true; 
     } 

    } 
    ProgressDialog pd = null; 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     pd=new ProgressDialog(MainActivity.this); 
     pd.setTitle("Mohon Tunggu Sebentar"); 
     pd.setMessage("Website Loading.."); 
     pd.show(); 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     pd.dismiss(); 
     super.onPageFinished(view, url); 
    } 
} 


//bikin tombol back halaman 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     switch (keyCode) { 
      case KeyEvent.KEYCODE_BACK: 
       if (mwebView.canGoBack()) { 
        mwebView.goBack(); 
       } else { 
        finish(); 
       } 
       return true; 
     } 
    } 
    return super.onKeyDown(keyCode, event); 
}} 

我使用PHP本身的

+0

希望這是你在找什麼[鏈接](http://stackoverflow.com/questions/2465432/android-webview-completely-clear-the-cache) – fightingCoder

+0

確實刪除了緩存也破壞會話?因爲我的網絡具有登錄功能,並且我想要它持續很長時間,所以用戶在下次打開應用程序時不需要再次登錄 – wildape

+0

您是否嘗試過代碼?我不確定你是否可以在這種情況下維持會議。 – fightingCoder

回答

0

mwebView.loadUrl("about:blank"); mwebView.loadUrl("http://192.168.94.2/ee1/");

負載空白頁前加載任何新的網址。 因此,添加mwebView.loadUrl(「about:blank」);在所有if-else之前。

願這幫助!

+0

我應該在哪裏放置代碼?我把它高於此代碼 mwebView =(web視圖)findViewById(R.id.myWebView); WebSettings webSettings = mwebView.getSettings(); ,並使我的應用程序沒有響應 ,因爲這是我第一次開發移動應用程序 – wildape

+0

@wildape何時需要重新加載網頁? – buzzingsilently

+0

實際上我有六個導航欄項目,每個項目都鏈接到不同的php頁面。我想在每一個項目的重新加載頁面時,我與導航欄項目 – wildape

-1
webView.loadUrl("javascript:window.location.reload(true)"); 

這可能有助於重新加載web視圖。謝謝

+0

我應該在哪裏放置代碼?因爲這是我第一次開發移動應用程序 – wildape

+0

在聲明你的webview後添加它 –

0

webView緩存網站的所有內容,以便它不需要下載圖像等。 爲了獲得更新,您需要維護對文件的版本控制並使用cache-control = max-年齡在yout index.html文件