【问题标题】:Passing data from Native Activity to WebView将数据从 Native Activity 传递到 WebView
【发布时间】:2019-12-01 21:48:43
【问题描述】:

我正在尝试使用我的 Native Activity 中的 Intent 传递一个字符串,并在我的 WebActivity 类中检索它,如下所示:

final String username = getIntent().getStringExtra("USERNAME");

之后,我试图调用一个 Javascript 函数,该函数将使用 DOM 操作将 text 输入的值更改为 Intent 中的 username 值。我的问题是:

这可行(硬编码值称为“test”):

myWebView.loadUrl("javascript:(function(){document.getElementById('username').value = 'test';})();");

这不是(试图将其设置为我的意图值):

myWebView.loadUrl("javascript:(function(){document.getElementById('username').value = "+username+";})();");

我假设我可能错误地包装了 username 值,但是以我现在的方式使用它根本不会修改文本输入。

【问题讨论】:

  • 我对 JavaScript 了解不多,但是您缺少第二个 sn-p 中值周围的单引号;即...value = '"+username+"';})();"
  • 我试过了,但它设置为null
  • 那么,这似乎表明 JavaScript 正在工作。放置或获取额外的只是一个问题,或者你可能只是在那里传递了一个空值。
  • 我想通了。这都是我的错。当我创建Intent 时,我调用了startActivity() 函数在调用putExtra() 函数
  • 但是感谢您澄清缺少的单引号,这也是我错过的。

标签: javascript java android string android-studio


【解决方案1】:

在用户 Mike M. 的帮助下,我发现自己犯了两个错误:

  • 错误地放置了额外的
  • 缺少单引号
Intent myWebIntent = new Intent(MainActivity.this, MyWebActivity.class);
myWebIntent.putExtra("USERNAME", s); // this line needs to go before startActivity()
startActivity(battleShipIntent);

username 值应该用单引号括起来,如下所示:

myWebView.loadUrl("javascript:(function(){document.getElementById('username').value = '"+username+"';})();");

【讨论】:

    猜你喜欢
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2020-12-12
    • 1970-01-01
    • 2018-01-07
    相关资源
    最近更新 更多