【问题标题】:Questions about public static WebView in Java关于Java中公共静态WebView的问题
【发布时间】:2022-01-19 17:40:15
【问题描述】:

我的 MainActivity 中有一个名为 webViewpublic static WebView
我可以在 MainActivity 中处理它,使用一些正常的操作,例如 webView.loadUrl()

public static WebView webView;

webView.loadUrl();

现在我想在其他 Activity 中使用这个静态对象,但问题是:我什至无法得到它。

Log.i("MYTAG","work!");
Log.i("MYTAG",MainActivity.webView.getUrl());
Log.i("MYTAG","reload");

这里我打印了这个 webView 的 url,但它只执行到第一个步骤,它只打印“工作”并跳过这些后续步骤。同样,它不能执行命令“webView.loadUrl()”。

您可以通过在一个类中创建一个公共静态 WebView 对象并尝试在其他类中使用它来简单地重复此操作。
如果您能给我一些建议,非常感谢!

【问题讨论】:

    标签: java android webview


    【解决方案1】:

    您永远不应该拥有静态视图。视图链接到 Activity 的单个实例。不仅尝试在另一个活动中显示它不起作用,而且会导致巨大的内存泄漏,因为它内部有对其原始活动的引用。

    【讨论】:

    • 我明白了,那么如何在其他活动中更改此视图?
    • 你不会的。活动不应该知道其他活动。但是,多个视图可以共享数据,并且该数据的更改会导致其他活动在重新加载时自行更改。
    【解决方案2】:

    多亏了 Gabe Sechan,我有了一个新想法并成功地实现了它。 另一个活动无法直接更改我的 MainActivity 中的 webView,但可以通过广播发布其更改。所以我最终在 MainActivity 中使用了一个接收器来获取消息并更改 webView。

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多