как передать переменную из activity во fragment и передать ее обратно?

<p>в настоящее время я делаю приложение для android и хочу передать дату между действием и фрагментом .. у моего действия есть кнопка, которая открывает фрагмент: datepickerfragment.</p><p>в своей деятельности я показываю дату, которую хочу изменить с помощью фрагмента. поэтому я хочу передать дату в средство выбора даты и отправить ее обратно в действие.</p><p>я перепробовал много решений, но ни одно из них не работает. простой способ передать аргумент, но это не может быть сделано с фрагментами.</p>

<p><strong>чтобы передать информацию фрагменту</strong>, вы устанавливаете arguments при ее создании, и вы можете получить этот аргумент позже с помощью метода oncreate или oncreateview вашего фрагмента.</p><p>в функции newinstance вашего фрагмента вы добавляете аргументы, которые хотите отправить ему: </p><pre><code>/** * create a new instance of detailsfragment, initialized to * show the text at 'index'. */ public static detailsfragment newinstance(int index) { detailsfragment f = new detailsfragment(); // supply index input as an argument. bundle args = new bundle(); args.putint("index", index); f.setarguments(args); return f; } </code></pre><p>затем внутри фрагмента метода oncreate или oncreateview вы можете получить следующие аргументы:</p><pre><code>bundle args = getarguments(); int index = args.getint("index", 0); </code></pre><p><strong>если вы хотите теперь общаться с вашим фрагментом с вашей деятельностью (отправка или нет данных)</strong>, вам нужно использовать интерфейсы. то, как вы можете это сделать, очень хорошо объяснено в руководстве по документированию связи между фрагментами. поскольку все фрагменты обмениваются данными друг с другом через действие, в этом руководстве вы увидите, как вы можете отправлять данные из фактического фрагмента в его контейнер действий, чтобы использовать эти данные для действия или отправлять их в другой фрагмент, содержащийся в вашем действии. </p><p>учебное пособие по документации: </p><p> <a href="http://developer.android.com/training/basics/fragments/communicating.html">http://developer.android.com/training/basics/fragments/communicating.html</a> </p>

<h3>отправка данных из <code>activity</code> в <code>fragment</code></h3><p><strong>деятельность:</strong></p><pre><code>bundle bundle = new bundle(); string mymessage = "stackoverflow is cool!"; bundle.putstring("message", mymessage ); fragmentclass fraginfo = new fragmentclass(); fraginfo.setarguments(bundle); transaction.replace(r.id.fragment\_single, fraginfo); transaction.commit(); </code></pre><p><strong>фрагмент:</strong></p><p>чтение значения во фрагменте</p><pre><code>@override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { string myvalue = this.getarguments().getstring("message"); ... ... ... } </code></pre><p>но если вы хотите отправить значения из фрагмента в активность, прочитайте ответ jpardogo, вам нужны интерфейсы, дополнительная информация: <a href="http://developer.android.com/training/basics/fragments/communicating.html">связь с другими фрагментами</a> </p>

<p>используйте библиотеку eventbus для передачи события, которое может содержать вашу переменную, туда и обратно. это хорошее решение, потому что оно держит ваши действия и фрагменты слабо связаны</p><p> <a href="https://github.com/greenrobot/eventbus">https://github.com/greenrobot/eventbus</a> </p>

<p>благодаря @ ρяσѕρєя k и терри ... это мне очень помогает и <strong>отлично работает</strong> </p><p>из activity вы отправляете данные с намерением:</p><pre><code>bundle bundle = new bundle(); bundle.putstring("edttext", "from activity"); // set fragmentclass arguments fragmentclass fragobj = new fragmentclass(); fragobj.setarguments(bundle); </code></pre><p>и в методе fragment oncreateview:</p><pre><code>@override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // get arguments string strtext = getarguments().getstring("edttext"); return inflater.inflate(r.layout.fragment, container, false); } </code></pre><p>ссылка: <a href="https://stackoverflow.com/questions/12739909/send-data-from-activity-to-fragment-in-android">отправка данных об активности на фрагмент в android</a> </p>

<p>вы можете просто создать свой фрагмент с помощью пакета:</p><pre><code>fragment fragment = fragment.instantiate(this, rolesteamslistfragment.class.getname(), bundle); </code></pre>