我怎么能刷新webview?

时间:2017-04-07 09:23:39

标签: android webview

所以我创建了一个网站,只需使用webview即可转换为移动应用程序。当我第一次安装apk时,它运行得很好,但问题是在那之后,网络只是静态的,或者它已经不再加载了。

它只是打开相同的内容,就像我第一次安装它,即使我已经改变了整个网站。我不知道问题出在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

3 个答案:

答案 0 :(得分:0)

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

在加载任何新网址之前加载空白页面。 所以添加mwebView.loadUrl(“about:blank”);在你所有的if-else案件之前。

愿这个帮助!

答案 1 :(得分:0)

webView缓存网站的所有内容,因此无需下载图像等。 为了获得维护文件版本所需的更新,并且在index.html文件上有一个cache-control = max-age

答案 2 :(得分:-1)

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

这可能有助于重新加载webview。感谢