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

问题描述 投票:1回答:1

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

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

当前代码:

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

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

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

android webview android-webview
1个回答
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:

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

为什么函数onKeyDown:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.