我有一个调用Web服务的活动,我想将这些结果传递给一个片段。显然,Web服务是由AsyncTask调用的,因此在获得结果之前会加载片段。
如何从活动的AsyncTask中将此参数传递给片段?
答案 0 :(得分:1)
您可以在Fragment中实现一个方法,并在需要时调用它。对于活动和片段之间的双向通信,请参阅http://developer.android.com/training/basics/fragments/communicating.html
答案 1 :(得分:1)
在片段中设置捆绑包。
Bundle args = new Bundle();
args.putInt("id",value);
Fragment newFragment = new Fragment();
newFragment.setArguments(args);
在你的片段中获取包
Bundle b = getArguments();
String s = b.getInt("id");
答案 2 :(得分:0)
您可以将AsyncTask移动到片段中。
但是如果你想保持当前的设置,你应该在初始化时保存Fragment引用,并在片段中创建一个以新数据作为参数的公共函数。
因此活动代码可能如下所示:
MyFragment fragment = new MyFragment();
getFragmentManager().beginTransaction().replace(android.R.id.content, fragment).commit();
然后你可以打电话:
fragment.updateData(myNewData);
请确保进行适当的空检查,以确保安全。