java - 难以从其他 Activity/类(class)控制 webview

标签 java android android-webview android-adapter android-recyclerview

就目前而言,在我正在编写的应用程序中,我有一个通过 NavigationDrawerFragment 的抽屉导航,其中有一个通过另一个类中的适配器填充的 RecyclerView,以及一个WebView 在我的 MainActivity 中。我现在已经从我的 RecyclerView 的适配器中获得了点击处理,我想做的是将不同的内容加载到 WebView 中的 >MainActivity 点击抽屉导航中的 RecyclerView 项目。我设法通过 Intents 和 putExtra() 实现了这一点,但它涉及重新启动 MainActivity,这感觉非常笨拙,而且也确实破坏了我从一开始就打算实现的无缝用户体验.

我在想也许我可以将 WebView 作为 Fragment 并在 MainActivity 中对其进行膨胀,也许这会让我从 RecyclerView 适配器控制它?我是 Android 和 Java 的新手,到目前为止我一直在关注示例,所以我真的不知道什么会完成什么,我想知道什么时候可以回到我适当的编码环境。我的笔记本电脑不是最适合它的,因为它需要很长时间才能编译和运行。

我想我想问的是我的这个想法是否是正确的方法,如果不是,那会是什么?

最佳答案

Fragment 应该足够了:

public class WebViewFragment extends Fragment {
    public static final String TAG = WebViewFragment.class.getName();
    public WebView mWebView;

    ...  

    public void updateWebView(String url) {
        mWebView.loadUrl(url);
    }
}

你总是可以通过标签(或 id)找到 Fragments:

get[Support]FragmentManager().findFragmentById(int id);
get[Support]FragmentManager().findFragmentByTag(String tag);

并调用方法:

WebViewFragment webViewFragment = (WebViewFragment) get[Support]FragmentManager().findFragmentByTag(WebViewFragment.TAG);
webViewFragment.updateWebView(url);

您应该在 NavigationDrawer 所在的同一 Activity 中添加 WebViewFragment

最终解决方案:

@Override
public void itemClicked(View view, int position) {
    Toast.makeText(getActivity(), "clicked " + (position+1), Toast.LENGTH_SHORT).show();
    WebView webView = (WebView) getActivity().findViewById(R.id.webview);
    webView.loadUrl(...your url here...)
} 

关于java - 难以从其他 Activity/类(class)控制 webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28391931/

相关文章:

java - 是否可以避免使用 xalan TransformerFactory?

android - 如何在android drawable中一个接一个地绘制多个形状类似于垂直方向的Liner布局

android - 将图像传递给另一个 Activity

java - 通过蓝牙将 Android App 连接到 Mac OS X 上的 Python 脚本

javascript - Android WebView "Cannot read property ' getAttribute' 未定义”

android - fragment 中的 WebView 不加载 HTML 字符串

java - 错误 : Entities and Pojos must have a usable public constructor - Java

java - eclipse如何理解文件系统中的文件变化?

java - 如何获取不同Annotation的值

java - 无法在 Android WebView 中加载本地 HTML 文件