嗨,我知道这个问题有答案。我已经尝试了所有这些,但它在我的应用程序中无效。 我正在开发一个具有3个Fragment活动的应用程序。第一个片段显示一个网站,第二个片段显示listview,第三个片段显示另一个列表视图。现在我想在用户点击listitem时将第三个片段的URL发送到第一个片段。这就是我所做的。
我将这个片段中的字符串url发送到第一个片段。
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position,
long id) {
FragmentC fragment = new FragmentC();
final Bundle bundle = new Bundle();
bundle.putString("position", "http://www.facebook.com"); fragment.setArguments(bundle);}
});
这是我需要网址并希望在网页视图中显示的第一个片段。
String url="http://www.hotelsearcher.net/";
Bundle args = getArguments();
if (args != null){
url = args.getString("position");
}
WebView webView= (WebView) V.findViewById(R.id.webView1);
WebSettings webViewSettings = webView.getSettings();
webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webViewSettings.setJavaScriptEnabled(true);
webViewSettings.setPluginState(PluginState.ON);
webView.loadUrl(url);
当我点击列表项时,我什么也看不见。它没有将我重定向到第一个片段。请帮助我..
答案 0 :(得分:71)
使用捆绑发送String
:
//Put the value
YourNewFragment ldf = new YourNewFragment ();
Bundle args = new Bundle();
args.putString("YourKey", "YourValue");
ldf.setArguments(args);
//Inflate the fragment
getFragmentManager().beginTransaction().add(R.id.container, ldf).commit();
在新片段的onCreateView
中:
//Retrieve the value
String value = getArguments().getString("YourKey");
答案 1 :(得分:2)
您必须将捆绑包附加到您的片段。
fragment.setArguments(bundle);
之后更改或替换新片段。
您必须确保String位于新片段中。调试!!
答案 2 :(得分:2)
1.如果片段由同一活动托管 - 您无法将意图转移到Fragment。片段作为Activity的一部分,它本身不是一个活动。因此,要在片段之间共享字符串,可以在Activity中声明一个静态字符串。从片段A访问该字符串以设置值并获取片段B中的字符串值。
2.两个片段由不同的活动托管 - 然后您可以使用putExtra将活动A的片段A中的字符串传递给活动B.将该字符串存储在活动B中并在片段B中使用它。
答案 3 :(得分:0)
您可以通过两种方式发送数据 首先,当您想在发送数据时启动该片段
SecondFragment ldf = new SecondFragment ();
Bundle args = new Bundle();
args.putString("YourKey", "YourValue");
ldf.setArguments(args);
//Inflate the fragment
getFragmentManager().beginTransaction().add(R.id.container, ldf).commit();
其次,当您想要在不打开片段的情况下发送数据时
FragmentTransaction ft = mFragmentManager.beginTransaction();
ft.add(R.id.fragContainer1, new ModelListFragment(), FRAG_MODEL_LIST);
ft.add(R.id.fragContainer2, new TrimListFragment(), FRAG_TRIM_LIST);
ft.commit();
Fragment fragment = mFragmentManager.findFragmentByTag(MainActivity.FRAG_MODEL_LIST);
Log.d("MY", "found fragment: " + (fragment != null));