提问人:Andy Jadeja 提问时间:8/11/2022 最后编辑:Andy Jadeja 更新时间:8/11/2022 访问量:36
如何创建一个可用于将字符串数据发送到片段的方法?
How can I create a method that can I use to send string data to fragment?
问:
我创建了一个简单的 WebView 应用程序,其中包含一个 WebView 片段。
我有一个带有 5 到 6 个网站 URL 的导航抽屉,我想要的是当有人单击将在该 WebView 中打开的特定链接时。
单击的任何链接都会在单个 Web 视图片段中打开它。
我在 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 Fragment
webView = view.findViewById(R.id.webViewFragment);
Bundle bundle = this.getArguments();
String webUrls = bundle.getString("weburl");
webView.loadUrl(webUrls);
我不知道如何创建一个带有参数和所有参数的方法。
请帮忙
答:
-1赞
Huib
8/11/2022
#1
sendData() 方法在这段代码中设置相同的 URL。每次使用 putString 方法设置“webUrl”时,它都会重写前面的
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 (urls[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;
评论
0赞
Andy Jadeja
8/11/2022
嘿,谢谢,但是你能解释一下更多关于片段行的信息吗?因为它不起作用。我想我错过了什么
0赞
Huib
8/11/2022
你能说得更具体一点吗?使用您展示的代码,webview 片段应该可以工作。您始终可以使用调试器跟踪它,并检查带有 bundle.getString(“weburl”) 的行是否返回正确的 url。
0赞
Andy Jadeja
8/11/2022
它现在正在工作。非常感谢,朋友,你拯救了我的一天。
0赞
Arul
8/11/2022
bundle.putString(“weburl”, urls[4]);放置相同的名称将替换 bundle 中的值
评论