Android WebView返回上一页错误(不幸的是Android应用已经停止)

时间:2014-12-23 20:47:50

标签: android webview

我有一个应用程序,其中我有一个WebView,我在其中显示一些网站。它有效,单击网页中的链接转到我的应用程序内的网站的下一页。但是,当我点击手机的后退按钮时,它表示"不幸的是,Android应用程序已经停止"请帮帮我

这是代码

@Override
protected void onCreate(Bundle sa``vedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebView webview = (WebView) findViewById(R.id.webview);
    webview.getSettings().setSupportZoom(true);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.loadUrl("http://www.goldplak.com");

    final ProgressDialog progress = ProgressDialog.show(this, "Gold Plak", "Yükleniyor....", true);
    progress.show();
    webview.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            Toast.makeText(getApplicationContext(), "Sayfa yüklendi", Toast.LENGTH_SHORT).show();
            progress.dismiss();
        }

        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Toast.makeText(getApplicationContext(), "Bir hata oluştu", Toast.LENGTH_SHORT).show();
            progress.dismiss();
        }

    });

}

@Override
public void onBackPressed() {
    if(webview.canGoBack()) {
        webview.goBack();
    } 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.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    super.onOptionsItemSelected(item);
    switch(item.getItemId()) {
        case R.id.action_about:
            action_aboutMenuItem();
            break;
        case R.id.action_settings:
            action_settingsMenuItem();
            break;
    }
    return true;
}
private void action_aboutMenuItem(){
    new AlertDialog.Builder(this)
            .setTitle("Hakkımızda")
            .setMessage("Gold Plak olarak müzik sektörü ile ilgili müşteri odaklı kişisel ve kurumsal hizmet veren, dinamik, güler yüzlü, yaratıcı kadromuzla müşterilerimizin beklentilerini karşılamak için kesintisiz hizmet vermekteyiz.\n" +
                    "\n" +
                    "Bu şekilde müşterilerimizin plak ve dj ekipmanlarından yararlanmalarını sağlayarak taleplerini karşılayabilmek. Hedefimiz, yeni çıkan tüm ürünleri sunmak, maksimum düzeyde müşteri memnuniyetini sağlamak..")
  .setNeutralButton("Tamam", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {

      }
  }).show();
    }
private void action_settingsMenuItem(){
    new AlertDialog.Builder(this)
            .setTitle("Versiyon")
            .setMessage("Gold Plak v1.1")
            .setNeutralButton("Tamam", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            }).show();
}


    }

1 个答案:

答案 0 :(得分:0)

看起来,您有一个名为webView的字段和方法onCreate中的局部变量会影响它。因此该字段仍为null,这会导致方法NullPointerException中出现onBackPressed

尝试更改此行

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

到此:

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