电话后退按钮在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
}
非常坦克。
答案 0 :(得分:3)
您不需要拨打super.onBackPressed()
,因为您正在控制自己的活动结束。
同样,您实际上并不需要webView.isFocused()
方法调用。
您可以将onBackPressed
方法重写为以下内容:
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
finish();
}
}
我不太确定你的动机是否包含button1235
按钮,这是你想删除的内容吗?
答案 1 :(得分:0)
删除onKeyDown
方法实现,因为您实现它的方式将永远不会被调用onBackPressed
。 onBackPressed
应该只是:
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错误。整个布局可以改进。