Как отправить данные из одного фрагмента в другой фрагмент?

Привет, я знаю, что есть ответы на этот вопрос. Я пробовал все из них, но он не работает в моем приложении. Я разрабатываю приложение, которое имеет 3 функции Фрагмента. Первый фрагмент показывает веб-сайт, второй фрагмент имеет listview, а третий фрагмент имеет другой список. Теперь я хочу отправить URL из третьего фрагмента в первый фрагмент, когда пользователь нажимает на listitem. Это то, что я сделал.

Я отправляю строковый 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);} }); 

Это первый фрагмент, в котором мне нужен URL-адрес, и вы хотите показать его в веб-просмотре.

 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); 

Когда я нажимаю на элемент списка, я ничего не вижу. Это не перенаправляет меня на первый фрагмент. Пожалуйста, помогите мне ..

Используйте Bundle для отправки 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. Если фрагменты размещаются по одной и той же активности, вы не можете использовать намерение для фрагмента. Фрагмент действует как часть Деятельности, это не действие само по себе. Итак, чтобы разделить строку между фрагментами, вы можете объявить статическую String в Activity. Получите доступ к этой строке из фрагмента A, чтобы установить значение и получить строковое значение в фрагменте B.

2. Оба фрагмента размещаются в разных действиях. Затем вы можете использовать putExtra для передачи строки из фрагмента A действия A в действие B. Храните эту строку в Activity B и используйте ее в фрагменте B.

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

 fragment.setArguments(bundle); 

И после этого измените или замените новый фрагмент.

Вы должны быть уверены, что String находится в новом фрагменте. Отладка !!

Вы можете отправлять данные двумя способами. Сначала, когда вы хотите запустить этот фрагмент при отправке данных

 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));