Android fragments 如何从另一个片段中的按钮打开片段中的特定网站

Android fragments 如何从另一个片段中的按钮打开片段中的特定网站,android-fragments,webview,Android Fragments,Webview,我正在MainActivity中使用TabLayout和ViewPager,我想通过单击另一个片段(FragmentHome)中的按钮打开包含webview的片段(BrowserFragment)中的特定网站。在HomeFragment中,我有两个按钮,goToFacebook通向Facebook,goToAmazon通向亚马逊 这是我的代码: MainActivity扩展了AppCompative活动 TabLayout tabLayout; ViewPager viewPager; TabI

我正在MainActivity中使用TabLayout和ViewPager,我想通过单击另一个片段(FragmentHome)中的按钮打开包含webview的片段(BrowserFragment)中的特定网站。在HomeFragment中,我有两个按钮,goToFacebook通向Facebook,goToAmazon通向亚马逊

这是我的代码:

MainActivity扩展了AppCompative活动

TabLayout tabLayout;
ViewPager viewPager;
TabItem homeTabItem;
TabItem browserTabItem;
TabItem profilTabItem;

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

    tabLayout=findViewById(R.id.tabLayout);
    homeTabItem=findViewById(R.id.homeTabItem);
    browserTabItem=findViewById(R.id.browserTabItem);
    profilTabItem=findViewById(R.id.profilTabItem);

    viewPager=findViewById(R.id.viewPager);

    pagerAdapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());

    viewPager.setAdapter(pagerAdapter);

    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
}
PagerAdapter扩展片段PagerAdapter

 private int numOfTabs;
public PagerAdapter(@NonNull FragmentManager fm, int numOfTabs) {
    super(fm);
    this.numOfTabs=numOfTabs;
}

@NonNull
@Override
public Fragment getItem(int position) {
    Fragment fragment;

    switch(position){
        case 0 :
            return new HomeFragment();
        case 1 :
            return new BrowserFragment();
        case 2 :
            return new ProfilFragment();
        default:
            return null;
    }
}

@Override
public int getCount() {
    return numOfTabs;
}
BrowserFragment扩展片段

WebView webView;
ProgressBar progressBar;


public BrowserFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
  
    View v = inflater.inflate(R.layout.fragment_browser, container, false);
    progressBar = v.findViewById(R.id.progressBar);
    progressBar.setMax(100);

    webView=v.findViewById(R.id.webView);

    webView.setWebViewClient(new MyWebViewClient());
    webView.setWebChromeClient(new MyWebChromeClient());
    webView.getSettings().setJavaScriptEnabled(true);

    webView.loadUrl("https://www.google.com/");
    return v;
}

private class MyWebViewClient extends WebViewClient
{
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String request)
    {
        view.loadUrl(request);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url)
    {
        super.onPageFinished(view, url);
        progressBar.setVisibility(View.GONE);
        progressBar.setProgress(100);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon)
    {
        super.onPageStarted(view, url, favicon);
        progressBar.setVisibility(View.VISIBLE);
        progressBar.setProgress(0);
    }

}

private class MyWebChromeClient extends WebChromeClient
{
    public void onProgressChanged(WebView view, int progress)
    {
        progressBar.setProgress(progress);
    }
}
Button goToAmazon, goToFacebook;

String urlAmazon ="https://www.amazon.com";
String urlFacebook="https://www.facebook.com";
String urlDestination;


public HomeFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_home, container, false);

    goToAmazon=v.findViewById(R.id.goToAmazon);
    goToFacebook=v.findViewById(R.id.goToFacebook);

    goToAmazon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            urlDestination=urlAmazon;
        }
    });

    goToFacebook.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            urlDestination=urlFacebook;
        }
    });

    return v;
}
HomeFragment扩展了片段

WebView webView;
ProgressBar progressBar;


public BrowserFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
  
    View v = inflater.inflate(R.layout.fragment_browser, container, false);
    progressBar = v.findViewById(R.id.progressBar);
    progressBar.setMax(100);

    webView=v.findViewById(R.id.webView);

    webView.setWebViewClient(new MyWebViewClient());
    webView.setWebChromeClient(new MyWebChromeClient());
    webView.getSettings().setJavaScriptEnabled(true);

    webView.loadUrl("https://www.google.com/");
    return v;
}

private class MyWebViewClient extends WebViewClient
{
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String request)
    {
        view.loadUrl(request);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url)
    {
        super.onPageFinished(view, url);
        progressBar.setVisibility(View.GONE);
        progressBar.setProgress(100);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon)
    {
        super.onPageStarted(view, url, favicon);
        progressBar.setVisibility(View.VISIBLE);
        progressBar.setProgress(0);
    }

}

private class MyWebChromeClient extends WebChromeClient
{
    public void onProgressChanged(WebView view, int progress)
    {
        progressBar.setProgress(progress);
    }
}
Button goToAmazon, goToFacebook;

String urlAmazon ="https://www.amazon.com";
String urlFacebook="https://www.facebook.com";
String urlDestination;


public HomeFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_home, container, false);

    goToAmazon=v.findViewById(R.id.goToAmazon);
    goToFacebook=v.findViewById(R.id.goToFacebook);

    goToAmazon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            urlDestination=urlAmazon;
        }
    });

    goToFacebook.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            urlDestination=urlFacebook;
        }
    });

    return v;
}
我应该在onClick()方法中放入哪些代码来加载webview中的特定地址并显示包含webview的片段