如何从MainActivity访问外部视图

时间:2017-09-06 18:10:38

标签: java android android-fragments android-viewpager android-tablayout

这个问题让我的大脑爆裂了。我有两个片段,每个片段包含一个WebView。然后将这两个片段放在ViewPagerAdapter中,这是我的ViewPager的适配器。然后使用TabLayout设置此ViewPager。在代码中:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebViewFragment webViewFragment1 = WebViewFragment.newInstance(1);
    WebViewFragment webViewFragment2 = WebViewFragment.newInstance(2);

    WebViewFragment[] fragments = new WebViewFragment[]
            {
                    webViewFragment1,
                    webViewFragment2
            };

    String[] fragmentTitles = new String[]
            {
                    "WebView1",
                    "WebView2"
            };

    ViewPager viewPager = (ViewPager)findViewById(R.id.viewPager);
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), fragments, fragmentTitles);
    viewPager.setAdapter(adapter);

    TabLayout tabLayout = (TabLayout)findViewById(R.id.tabLayout);
    tabLayout.setupWithViewPager(viewPager);
}

这种结构让我可以像WhatsApp(手势控制)一样查看片段。

尽管如此,我想控制MainActivty中WebViewFragments中WebViews的内容。但我不知道如何从外部访问WebViews。这两个网页浏览具有ID:

webView1 //and
webView2

当我尝试使用

的帮助访问它们时
findViewById(R.id.webView1)

方法,我得到null作为回应。

现在,我如何从MainActivity访问这些视图?

1 个答案:

答案 0 :(得分:0)

WebViewFragment

 private WebView webView;
  public onViewCreated(....) {
       webView = view.findViewBy(R.id.webview);
       ....
  }

  public WebView getWebView() {
       return webView;
  }

活动

    WebViewFragment webViewFragment1 = WebViewFragment.newInstance(1);
   WebView webView = webViewFragment1.getWebView();
   webView.... //WebView Stuff

请确保2片碎片充气而不是空。