java - 从另一个 ListView Activity 执行 webview 操作

标签 java android webview

我有一个 WebView 作为主要 Activity ,我想从另一个 Activity 的“首选项”( ListView )刷新 WebView 。可以这样做吗?我不想在应用程序菜单上有“刷新”按钮。

但是当我在我的偏好 Activity 上按下“刷新”后,该 Activity 将崩溃,我假设是“R.id.web_engine”,即来自 MainActivity 布局,导致崩溃(请查看下面的代码)。

如何从外部 Activity 执行 webview 操作?

示例:

在我的MainActivity中会有

        //Webview
        final WebView engine = (WebView) findViewById(R.id.web_engine);
        engine.loadUrl("file:///android_asset/www/index.html");
        engine.getSettings().setJavaScriptEnabled(true);

首选项

//Get the custom preference
Preference refreshPref = (Preference) findPreference("refreshPref");
refreshPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {

             public boolean onPreferenceClick(Preference preference) {

         Toast.makeText(getBaseContext(),
         "Loading...",Toast.LENGTH_SHORT).show();
         WebView engine = (WebView) findViewById(R.id.web_engine);
         engine.loadUrl("javascript:window.location.reload();");

         return true;
                      }

              });

最佳答案

该行导致崩溃

WebView engine = (WebView) findViewById(R.id.web_engine);
engine.loadUrl("javascript:window.location.reload();");

如果我理解正确的话,这应该是一个空指针崩溃,因为这个 Preference Activity 将永远无法找到使用此方法的主要 Activity 的 WebView。更好的方法是广播一个 Intent 来刷新并在主 Activity 中处理该 Intent 并执行操作。

在此处查看有关广播接收器的详细信息 http://thinkandroid.wordpress.com/2010/02/02/custom-intents-and-broadcasting-with-receivers/

关于java - 从另一个 ListView Activity 执行 webview 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7550609/

相关文章:

ios - 如何使用后退按钮使导航栏透明,并且 webView 将显示到状态栏的边缘

javascript - 如何在 android 中从 WebView trim 上面的数据加载消息

java - 单击回收器 View 子项后启动新 Intent

java - 尝试绘制动画位图,但不起作用

java - 如何将listview中的textview传回php

javascript - 在没有 token 的情况下保护 API 调用

Java 类型删除 : why won't the following snippet compile?

java - Java 中的 K 最近邻实现

java - 这些 BST 算法中哪个更实用?

objective-c - 从 WKWebView 获取 favicon.co