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 内容?