Как уже упоминалось здесь , ваши фрагменты не должны напрямую общаться друг с другом. Сообщение должно быть выполнено через активность. Итак, лучший способ для меня - создать интерфейс 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");
в вашем первом фрагменте. Это вызовет метод вашей деятельности, а метод вашей деятельности вызовет соответствующий метод второго фрагмента.
В будущем вы можете добавить дополнительные методы в интерфейс обратного вызова и внедрить их в свою активность.