现在看来,在我写的应用程序中,我有NavigationDrawerFragment
导航抽屉,其中RecyclerView
通过另一个类中的适配器填充,WebView
个我的MainActivity
。我正处于从RecyclerView
的适配器处获得点击处理的位置,我想要做的是在点击WebView
时将不同的内容加载到MainActivity
中导航抽屉中的RecyclerView
项。我设法用Intents和putExtra()
实现了一种方法来实现这一点,但它涉及重新启动MainActivity,它感觉非常笨重,并且真正打破了我从一开始就打算实现的无缝UX。
我在想,也许我可以将WebView
作为Fragment
并在MainActivity
中对其进行充气,也许这可以让我从RecyclerView
控制它适配器?我对Android和Java都很陌生,到目前为止我一直在关注这些例子,所以我真的不知道将会有什么成就,而且我想知道什么时候我能够回到我正确的编码环境。我的笔记本电脑并不是最好的,因为编译和运行需要很长时间。
我想我要问的是,如果我的这个想法是正确的方法,如果没有,那会是什么?
答案 0 :(得分:1)
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所在的WebViewFragment
中添加Activity
。
最终解决方案:
@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...)
}