как перенести дополнительные данные из одного фрагмента в другой с помощью активности - PullRequest
6 голосов
/ 03 февраля 2012

Например, в представлении списка, размещенном на ListActivity , когда пользователь щелкает элемент в списке, запускается новое действие, а предыдущее действие переносит дополнительные данные в новое действие, как показано ниже:

public class Notepadv2 extends ListActivity {
    ...

   @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

        Intent i = new Intent(this, NoteEdit.class);
        i.putExtra(NotesDbAdapter.KEY_ROWID, id);
        startActivityForResult(i, ACTIVITY_EDIT);
     }
}

Как должно быть, если я использую фрагменты? Я имею в виду, если у меня есть одно действие, в котором размещены 2 фрагмента и выполняются транзакции фрагментов, как показано ниже:

// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);

// Commit the transaction
transaction.commit();

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

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

Ответы [ 2 ]

22 голосов
/ 03 февраля 2012

Использование

Bundle data = new Bundle();
data.putString("name",value);
Fragment fragment = new nameOfFragment();
fragment.setArguments(data);
.navigateTo(fragment);
3 голосов
/ 31 августа 2016

Из Activity вы отправляете данные с намерением:

Bundle bundle = new Bundle();
bundle.putString("key", "value");
// set Fragmentclass Arguments
Fragmentclass fragmentobj = new Fragmentclass();
fragmentobj.setArguments(bundle);

и в методе Fragment onCreateView:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    String strtext = getArguments().getString("key");    
    return inflater.inflate(R.layout.fragment, container, false);
}

Я надеюсь, что это полная помощь для вас.

...