我的应用程序中只有几个片段,我想在单击该URL和下一个片段以打开该URL时将URL从当前片段发送到另一个片段。
答案 0 :(得分:2)
创建第二个片段时,需要将URL作为参数传递:
Bundle bundle = new Bundle();
bundle.putString("url", myUrl);
Fragmentclass fragment = new Fragmentclass();
fragobj.setArguments(bundle);
以及在片段的onCreateView方法中:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String url = getArguments().getString("url");
}
文档:https://developer.android.com/reference/android/support/v4/app/Fragment.html#getArguments()
答案 1 :(得分:0)
如here所述,您的片段不应直接相互通信。交流应通过活动进行。因此,对我而言,最好的方法是在第一个片段中创建Callback接口,并将父Activity转换为它:
public interface Callback {
void onUrlOpen(String url);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mCallback = ((Callback) getActivity());
} catch (ClassCastException e) {
throw new RuntimeException("Parent activity should implement callback interface!");
}
}
在您的活动中实现此界面:
public class MainActivity extends AppCompatActivity implements Fragment1.Callback
在实现中(在MainActivity.java中)调用Fragment2的适当方法:
@Override
public void onUrlOpen(String url) {
fragment2.openUrl(url);
}
然后,您只需要在第一个片段中调用mCallback.onUrlOpen("example.com");
。这将调用您的活动的方法,而您的活动的方法将调用第二个片段的适当方法。
将来,您可以在Callback接口中添加其他方法,并在Activity中实现它们。