难以从其他 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...)
}
就目前而言,在我正在编写的应用程序中,我有一个通过 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...)
}