【问题标题】:Android - WebView back button [duplicate]Android - WebView后退按钮[重复]
【发布时间】:2018-03-29 20:06:00
【问题描述】:

我在 WebView 中有一个网站的镜像,我希望当我按下智能手机上的 ** 返回 ** 按钮时,我会返回到上一页。目前,如果我按下智能手机上的 ** Back ** 按钮,应用程序将被最小化(它停留在后台)。 我不知道该怎么做,谁能帮帮我?

MainActivity

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

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

        WebView wv = (WebView) findViewById(R.id.webview1);
        wv.loadUrl("https://www.xxxx.com.br");
        wv.setWebViewClient(new WebViewClient());

        WebSettings ws = wv.getSettings();
        ws.setJavaScriptEnabled(true);
        ws.setSupportZoom(false);

清单

<uses-permission android:name="android.permission.INTERNET" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@drawable/ic_stat_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />


            </intent-filter>
        </activity>
    </application>

</manifest>

【问题讨论】:

  • 嗨,我是社区的新手。抱歉,我不知道如何使用搜索功能。删除该主题的过程是什么,因为您发布的主题有助于解决问题:如何在WebView中按时返回上一页?

标签: android


【解决方案1】:

在您的活动中覆盖 onBackPressed 方法,如下所示:

@Override
public void onBackPressed(){
    WebView wv = (WebView)findViewById(R.id.webview1);
    if(wv.canGoBack()){
        wv.goBack();
    } else {
        super.onBackPressed();
    }
}

在您的班级内部使用上述方法,而不是在外部。

public class MainActivity extends AppCompatActivity {

    //onCreate method

    //onBackPressed method

    //other methods

}

【讨论】:

  • 返回错误:Error:(31, 12) error: class, interface, or enum expected Error:Execution failed for task ':app:compileDebugJavaWithJavac' . > 编译失败;有关详细信息,请参阅编译器错误输出。
  • 调整后,完美运行。
  • 让我头疼,谢谢
【解决方案2】:

使用这个。

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

将wv 添加为全局数据

private WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    wv = (WebView) findViewById(R.id.webview1);
    wv.loadUrl("https://www.xxxxx.com.br");
    wv.setWebViewClient(new WebViewClient());

    WebSettings ws = wv.getSettings();
    ws.setJavaScriptEnabled(true);
    ws.setSupportZoom(false);

}

【讨论】:

  • 返回错误:Error:(33, 12) error: class, interface, or enum expected Error:Execution failed for task ':app:compileDebugJavaWithJavac' .
  • 在你的代码中使用wv而不是WebView。它是WebView Object。
  • 由于错误仍然存​​在,我插入了上面的代码
  • 你可以再试一次。@Ever
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多