Как передать ArrayList с Activity в Fragment используя Parcelable? [дубликат]

458
14 января 2017, 12:02

На данный вопрос уже ответили:

  • ArrayList в Bundle 2 ответа

Как перадать ArrayList с Activity в Fragment используя интерфейс Parcelable и извлечь данные в Fragment ?

Activity.class

public class MainActivity extends Activity {

    final String LOG_TAG = "myLogs";
    ArrayList<Parcelable> parcelableArrayList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ArrayList carList = new ArrayList();
          carList.add(new Car(1, "Honda", "Black"));
          carList.add(new Car(2, "Toyota", "Blue"));
          carList.add(new Car(3, "Suzuki", "Green"));

        Bundle bundle=new Bundle();
        bundle.putParcelableArrayList("name",carList);

        Fragment fragobj=new MyFragment();
        fragobj.setArguments(bundle);
        getFragmentManager().beginTransaction()
                .replace(R.id.fmContent, fragobj)
                .commit();
    }

Fragment.class

public class MyFragment extends Fragment{

    final String LOG_TAG = "myLogs";
    Bundle bundle;
    TextView text;
    TextView article;
    ArrayList<String > arrayList = new ArrayList<String >();
    ArrayList<Parcelable> parcelableArrayList;
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1, container, false);
        parcelableArrayList = getActivity().getIntent().getParcelableArrayListExtra("name");
        if (parcelableArrayList  !=null){
            Log.d(LOG_TAG,  " ------------------------->  myBundle contain IS "+arrayList.get(1));
        }else {
            final String LOG_TAG = "myLogs";
           // Bundle bundle;
            Log.d(LOG_TAG,  " ------------------------->  myBundle contain IS "+"NULL");
        }
        return view;
    }
}

В классе MyFragment.java получаю null на строке parcelableArrayList = getActivity().getIntent().getParcelableArrayListExtra("Student");

Как правильно организовать код для передачи типа ArrayList?

Answer 1

Тут

parcelableArrayList = getActivity().getIntent().getParcelableArrayListExtra("name");

вы пытаетесь получить данные из интента актвити, а вам надо из аргументов фрагмента. Т.е. так:

parcelableArrayList = getArguments().getParcelableArrayList("name");
Answer 2

1.Сделайте ArrayList - приватным полем в вашей Активности.

2.Создайте следующий метод в активности:

piblic ArrayList getArrayList(){
return MyArrayList
}

3.В фрагменте сделайте следующее:

ArrayList<YourGeneric> MyNewArrayList = new ArrayList<>();
MyNewArrayList = MainActivity.getArrayList(); 
READ ALSO
Опять по работе с ресурсами в Java

Опять по работе с ресурсами в Java

Есть проект со структурой

315
Регулярные выражения Java Regex

Регулярные выражения Java Regex

Задание:Написать регулярное выражение, определяющее является ли данная строка GUID с или без скобокГде GUID это строчка, состоящая из 8, 4, 4, 4, 12 шестнадцатеричных...

409
Что такое ArrayList&lt;&gt; в Java

Что такое ArrayList<> в Java

Одно из условий задачи: В классе Cat добавь public статическую переменную cats (ArrayList<Cat>)Я это понимаю вот так:

624
Открывать новый экран, при нажатии ListView

Открывать новый экран, при нажатии ListView

Здравствуйте, что только не делал, не получаетьсяНужно открывать новый экран, при нажатии на ListView

383