使用手机后退按钮退出webview

时间:2013-07-11 13:12:12

标签: android button webview back

电话后退按钮在webview中工作,但是当我想从Webview退出到应用程序时,这没有做任何事情。 我放了一个回到应用程序的按钮,但我不是那样的。

JAVA:

package com.wiralss.adb;

 import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
 import android.view.Window;
 import android.webkit.WebChromeClient;
 import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
 public class about extends Activity implements OnClickListener{
 WebView webView;

  final Activity activity = this;

@Override
public void onCreate(Bundle savedInstanceState)
{


super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.instagrem);
webView = (WebView) findViewById(R.id.webView1);
Button B123=(Button)findViewById(R.id.button1235);
B123.setOnClickListener(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://www.google.com");

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

  }



@Override
public void onClick(View v) {
    switch(v.getId()){

    case R.id.button1235:
        Intent B = new Intent(this, MainActivity.class);
    startActivity(B);
    break;

    // TODO Auto-generated method stub

}

    // TODO Auto-generated method stub

}
public void onBackPressed (){

    if (webView.isFocused() && webView.canGoBack()) {
            webView.goBack();       
    }
    else {
            super.onBackPressed();
            finish();
    }
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        webView.goBack();


        return true;
    }
    return false;
}
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:orientation="vertical" >

        <Button
            android:id="@+id/button1235"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="580px"
            android:layout_weight="0.05"
            android:text="Button" />

    </LinearLayout>

</RelativeLayout>

另一个问题。 要删除我需要删除的按钮?:

Button B123=(Button)findViewById(R.id.button1);
B123.setOnClickListener(this);

@Override
public void onClick(View v) {
    switch(v.getId()){

    case R.id.button1:
        Intent B = new Intent(this, MainActivity.class);
    startActivity(B);
    break;

    // TODO Auto-generated method stub

}

    // TODO Auto-generated method stub

}

非常坦克。

2 个答案:

答案 0 :(得分:3)

您不需要拨打super.onBackPressed(),因为您正在控制自己的活动结束。

同样,您实际上并不需要webView.isFocused()方法调用。

您可以将onBackPressed方法重写为以下内容:

public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();       
    }  else {
        finish();
    }
}

我不太确定你的动机是否包含button1235按钮,这是你想删除的内容吗?

答案 1 :(得分:0)

删除onKeyDown方法实现,因为您实现它的方式将永远不会被调用onBackPressedonBackPressed应该只是:

public void onBackPressed() {

    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
}

要删除按钮,它就足以让它消失,但首先你需要将它声明为类成员:

private Button B123;

并像在onCreate中一样初始化它:

webView = (WebView) findViewById(R.id.webView1);
B123 = (Button) findViewById(R.id.button1235);
B123.setOnClickListener(this);

让它消失:

@Override
public void onClick(View v) {
    switch (v.getId()) {

    case R.id.button1235:
        B123.setVisibility(View.GONE);
        Intent B = new Intent(this, SecondActivity.class);
        startActivity(B);
        break;

    // TODO Auto-generated method stub

    }

    // TODO Auto-generated method stub

}

我会更改布局,因为您使用的是px而不是dp,因此会出现一些lint错误。整个布局可以改进。