gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:21:51 25 4
gpt4 key购买 nike

就目前而言,在我正在编写的应用程序中,我有一个通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com