Android: как передать URL из одного фрагмента в другой - PullRequest
0 голосов
/ 26 октября 2018

Я получил несколько фрагментов в своем приложении, и я хотел отправить URL-адрес текущего фрагмента другому фрагменту при нажатии на этот URL-адрес и следующий фрагмент, чтобы открыть этот URL-адрес.

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

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

В будущем вы можете добавить дополнительные методы в интерфейс обратного вызова и внедрить их в свою активность.

0 голосов
/ 26 октября 2018

Когда вы создаете второй фрагмент, вам нужно передать 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()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...