Android Webview问题:如何在单个活动中打开具有不同按钮的不同页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Webview问题:如何在单个活动中打开具有不同按钮的不同页面相关的知识,希望对你有一定的参考价值。

我在android中编码很新。我正在为游戏DOTA 2制作一个伴侣应用程序。布局有很多按钮,我想利用Webview功能为不同的英雄加载不同的网页。教程似乎表明只能打开一个网页。我必须创建数百页来容纳不同的英雄。

题: 如何按下时每个按钮打开一个不同的页面?

当前代码:

WebView webView = (WebView) findViewById(R.id.webview);
webView.loadUrl("http://dota2.gamepedia.com/Abaddon");

我有113个网页需要打开,对应不同的英雄。

我希望这不是一个过载而且并非不可能。

答案

首先,这不是一个愚蠢的问题。你知道一些html吗?因为你可以通过JS的html打开所有113个网页来创建更少的html页面。你能告诉我你的mainActivity.java吗?

您需要将MainActivity编辑为:

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

公共类StrHeroInfo扩展AppCompatActivity {

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

    WebView swebView = (WebView) findViewById(R.id.web_str_hero);
    swebView.loadUrl("http://dota2.gamepedia.com/Abaddon");
    swebView.setWebViewClient(new WebViewClient());
}

@Override
public void onWindowFocusChanged(boolean hasFocas) {
    super.onWindowFocusChanged(hasFocas);
    View decorView = getWindow().getDecorView();
    if (hasFocas) {
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_IMMERSIVE
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    }
}
private class MyBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:")) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
        else {
            view.loadUrl(url);
            return true;
        }
    }
}

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && view.canGoBack()) {
        view.goBack(); //method goback()
        return true;
    }

    return super.onKeyDown(keyCode, event);
}
}

Explenation

为什么函数shouldOverrideUrlLoading:

您需要这个,否则您无法在webview中加载任何其他页面。

为什么函数onKeyDown:

如果您希望人们可以在手机上使用密钥,则需要此功能:

那么你需要做的只是你点击你转到另一页的图像?

以上是关于Android Webview问题:如何在单个活动中打开具有不同按钮的不同页面的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何在 webview 活动中显示 Youtube 频道?

在 webview Android 中检测到 url 时如何更改活动

当我的活动不可见时,如何在 Android WebView 中暂停 Flash 内容?

Android Webview - 使用一个 loadUrl 缩放图像以正确适合屏幕

防止在关闭屏幕时重新创建 Android 活动

在 webview 中单击链接时如何启动活动?