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

时间:2017-06-28 14:38:20

标签: android webview android-webview

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

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

当前代码:

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

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

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

1 个答案:

答案 0 :(得分:0)

首先,它不是一个愚蠢的问题。你知道一些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:

您需要此功能,否则您无法在网页浏览中加载任何其他网页。

为什么函数onKeyDown:

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

您需要做的只是单击转到其他页面的图像?