- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我创建了一个简单的应用程序来重现该问题。我有一个带有相关链接的 html 文件(带有 #
符号)。我正在将文件加载到 Android 的 WebView
中。但我只能通过链接访问一次。返回后,当我点击链接时没有任何反应。
重现步骤:
来源如下:
常见问题解答.html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, target-densityDpi=medium-dpi">
<title>Title</title>
</head>
<body>
<h1>FAQ</h1>
<ul>
<li><a href="#Foo">Link 1</a></li>
<li><a href="#Bar">Link 2</a></li>
</ul>
<h1><a name="Foo">Link 1 body</a></h1>
<p>a very very very long text</p>
<h1><a name="Bar">Link 2 body</a></h1>
</body>
</html>
activity_webview.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/outer_background">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
常见问题解答.kt
class FaqActivity : AppCompatActivity() {
private lateinit var webView: WebView
@SuppressLint("NewApi")
override fun onCreate(args: Bundle?) {
super.onCreate(args)
setContentView(R.layout.activity_webview)
if (supportActionBar != null) {
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
supportActionBar!!.setTitle(R.string.preference_about_faq)
}
webView = findViewById(R.id.webView)
val sb = StringBuilder()
try {
val inp = resources.openRawResource(R.raw.faq)
parseStream(inp, sb)
} catch (e: Resources.NotFoundException) {
}
webView.visibility = View.INVISIBLE
webView.settings.cacheMode = WebSettings.LOAD_NO_CACHE
webView.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
// removes white screen blinking in the night mode
webView.visibility = View.VISIBLE
}
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
return if (url.startsWith("http")) {
val uri = Uri.parse(url)
val intent = Intent(Intent.ACTION_VIEW, uri)
try {
startActivity(intent)
} catch (e: ActivityNotFoundException) {
}
true
} else {
false
}
}
}
webView.loadDataWithBaseURL(null, sb.toString(), "text/html", "UTF-8", null)
}
private fun parseStream(inputStream: InputStream, builder: StringBuilder) {
val NL = System.getProperty("line.separator")
val scanner = Scanner(inputStream, "UTF-8")
try {
while (scanner.hasNextLine()) {
builder.append(scanner.nextLine() + NL)
}
} finally {
scanner.close()
}
}
override fun onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed()
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
// Respond to the action bar's Up/Home button
android.R.id.home -> {
super.onBackPressed()
return true
}
}
return super.onOptionsItemSelected(item)
}
}
源是 Kotlin 文件,但我很确定它不会影响问题。
最佳答案
你可以在onBackPressed()
函数中使用webView.pageUp(true)
,而不是webView.goBack()
这样当您单击设备上的后退按钮,它会滚动到顶部。
关于android - 调用 goBack 后相关链接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57166138/
在我的 React Native 应用程序中,我有三个屏幕,如 A 和 B。我使用 react-navigation 版本 5 从一个屏幕导航到另一个屏幕。 当我从 A 移动到 B 并在 B 中输入一
场景是我有一个日历页面,该页面显示一个月中的所有日子,每天都有一个添加按钮: 当我单击添加按钮时,它会将我带到另一个页面,如果用户点击硬件后退按钮,我希望应用程序返回日历页面,但我希望页面滚动到用户最
我正在创建一个应用程序,我登录/注销有一个主页、关于、个人资料等。它也使用 react 路由器,但是当我登录时,我希望应用程序转换到它所在的最后一个路由,它有时会起作用,例如,如果我访问 about,
我如何错误检查Chrome浏览器是否有前一页?如果 Chrome 实例刚刚启动,并且没有上一页要使用命令page进入,我有一个冻结的按钮。 最佳答案 这是一个错误,不是预期的行为。您应该考虑将其报告为
我是 react 原生新手。现在我需要在两个屏幕上实现一个功能。当我单击“addActivity”场景中的底部时,它将返回“homeScene”,即“addActivity”的前一个场景,并显示“ad
我一直在阅读许多类似的问题和答案,但仍然不太明白这里出了什么问题。 我正在尝试创建一个按钮以返回上一个 View ,但我不断收到标题中提到的错误。有人可以告诉我我做错了什么吗? UIImage *i
我从一个不是tab的页面跳转到tab页。 在tab页,点击item后想返回。我使用 $ionicHistory.goBack() 返回。 我发现一个奇怪的情况,第一次$ionicHistory.goB
我正在尝试在按下 goBack 后重新渲染组件。通过使用 goBack 我可以返回页面,但该页面不会刷新。我该如何解决?goBack 之后我必须调用一些 api,现在在 back non of the
我的应用程序有一个要求,我需要在 webview 中呈现多个网页并提供 goback() 方法。 但不幸的是 goback() 方法在我们加载不退出的 url(来自多个页面的 url 之一)的情况下不
我正在开发一个使用 WKWebView 和自定义导航按钮的 iOS 应用程序。我们发现点击某些链接需要使用我们的后退按钮两次,因为第一次调用似乎只是重新加载当前页面。这不会发生在移动版 Safari
我正在使用reactjs构建一个应用程序,在某些时候我有一个SearchForm,然后我单击其中一个项目,在该 View 中我有一个后退按钮。 我想要的是用以前的数据填充搜索表单。我已经通过 java
我在页面中有产品列表。这个产品列表只会显示 5 个。单击“显示额外”按钮后,它将显示剩余的产品。 好的,在我点击“显示额外”按钮后,它会显示接下来的 5 个产品。现在共有 8 个产品。在剩下的 5 个
这是主要 Activity 的xml代码..
我创建了一个简单的应用程序来重现该问题。我有一个带有相关链接的 html 文件(带有 # 符号)。我正在将文件加载到 Android 的 WebView 中。但我只能通过链接访问一次。返回后,当我点击
我已经设置了一个 StackNavigator,它会触发一个 redux 操作来获取 componentDidMount 上的数据,在导航到另一个屏幕并返回到上一个屏幕后,componentDidMo
我有两个屏幕。每个屏幕包含三个子类。是的,我正在使用每个屏幕的选项卡。在我的第一个屏幕上说。 主屏幕 有 -> ScreenA、ScreenB、ScreenC。我的 DetailScreen 有 ->
我想在从另一个页面导航回来时向下滚动到 GridView 的底部。更具体地说,Frame.GoBack(NavigationTransitionInfo) 结束时,滚动将可见。是否有回调或某种方式在转
我面临返回上一页的问题,如果有人帮助我,将非常感谢。 这是我的 Controller 登录操作 public function actionLogin() { $this->l
关于TWebBrowser方法,我在GoBack上遇到问题。以下是显示问题的导航历史记录: [1] htt#://www.google.com/ [2] htt#://news.google.com/
我创建了一些动画,我想用它们在我的应用程序中的路线之间导航。我在某些页面上有一个可见的后退按钮,允许用户弹出导航堆栈以访问最近的页面。我想要两种不同的动画,一种用于在堆栈中更深入地导航,另一种用于弹回
我是一名优秀的程序员,十分优秀!