android-fragments 我如何创建一个方法,可以用来发送字符串数据到片段?

l7wslrjt  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(58)

我创建了一个简单的WebView应用程序,其中包含一个WebView片段。
我有一个导航抽屉与5至6个网站的网址,我想要的是当有人点击该特定链接,将在该WebView打开。
单击任何链接都会在单个webview片段中打开该链接。

我已在www.example.com中创建了此方法 MainActivity.java

public void sendData() {

        String[] urls = new String[5];

        urls[0] = getString(R.string.facebook_url);
        urls[1] = getString(R.string.instagram_url);
        urls[2] = getString(R.string.youtube_url);
        urls[3] = getString(R.string.telegram_url);
        urls[4] = getString(R.string.about_url);

        Fragment frag = new WebFragment();
        Bundle bundle = new Bundle();

        bundle.putString("weburl", urls[0]);
        bundle.putString("weburl", urls[1]);
        bundle.putString("weburl", urls[2]);
        bundle.putString("weburl", urls[3]);
        bundle.putString("weburl", urls[4]);

        frag.setArguments(bundle);
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.webContainer, frag).commit();
    }

这是导航点击

@Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {

       int id = item.getItemId();

       switch (id) {
           case R.id.fbMenu:
               sendData();
               break;

           case R.id.igMenu:
               sendData();
               break;

           case R.id.ytMenu:
               sendData();
               break;

           case R.id.teleMenu:
               sendData();
               break;

           case R.id.about:
               sendData();
               break;
       }

        return false;
    }

这是WebView片段

webView = view.findViewById(R.id.webViewFragment);

        Bundle bundle = this.getArguments();

        String webUrls = bundle.getString("weburl");
        webView.loadUrl(webUrls);

我不知道如何创建一个带参数的方法。
请帮帮忙

kgqe7b3p

kgqe7b3p1#

方法sendData()在这段代码中设置了相同的URL。

bundle.putString("weburl", urls[0]);
    bundle.putString("weburl", urls[1]);
    bundle.putString("weburl", urls[2]);
    bundle.putString("weburl", urls[3]);
    bundle.putString("weburl", urls[4]);

因此,webview将始终打开最后一个URL(url [4])。
我想这就是你要找的:

public void sendData(String url) {
    ...
    Bundle bundle = new Bundle();

    bundle.putString("weburl", url);
    ...
}

并将开关更改为:

switch (id) {
    case R.id.fbMenu:
        sendData(getString(R.string.facebook_url););
        break;

相关问题