难以从其他 activities/classes 控制 webview

Having difficulty controlling webview from other activities/classes

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

我在想也许我可以将 WebView 作为 Fragment 并在 MainActivity 中对其进行充气,也许这可以让我从 [=12] 中控制它=] 适配器?我对 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...)
}