Android Studio хранит массив списков с фрагментами? - PullRequest
0 голосов
/ 04 декабря 2018

Я работаю над приложением, которое будет отображать список элементов для пользователя, используя фрагменты и просмотр списка.В настоящее время в моем AlarmFragment1 () я объявил закрытый ArrayList.

private ArrayList<Alarms> alarms = new ArrayList<Alarms>

Я использую этот список для заполнения ListView в OnCreate созданным мной AlarmAdapter.Однако я хочу иметь возможность редактировать этот список сигналов тревоги в других фрагментах, например, для удаления элемента.

В моем AlarmFragment () у меня есть прослушиватель элементов, который я использую для открытия нового фрагмента, где пользователи получают возможность удалить элемент, по которому они щелкнули.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                Bundle bundle = new Bundle();
                bundle.putInt("item_index", i);

                FragmentManager manager = getFragmentManager();
                FragmentTransaction transaction = manager.beginTransaction();
                DeleteAlarm fragment = new DeleteAlarm();
                fragment.setArguments(bundle);

                transaction.add(R.id.main_frame, fragment);
                transaction.commit();

Внутри моего EditFragment Iесть слушатель кнопки удаления элемента.

delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Attempt at deleting item
                AlarmFragment alarm = new AlarmFragment();
                alarm.deleteAlarm(myInt); //<--myInt from bundle
                fListener = (OnFragmentInteractionListener) getActivity();
                fListener.changeFragment(3, "alarm");
            }
        });

Я попытался создать открытый метод внутри AlarmFragment (), который бы редактировал список для меня, например:

public void remove(int i){ alarms.remove(i); }

Мало того, что это не работает, но я такжепришлось бы придумать способ заново отобразить listView, который я изначально сделал в OnCreateView ().Я ходил кругами довольно долго, но безуспешно.Вместо этого я попытался добавить новый сигнал тревоги, но даже это не сработало.Есть ли способ, которым я мог бы сделать это, или другой способ хранения списка массивов, поскольку список будет сброшен при закрытии приложения.

1 Ответ

0 голосов
/ 04 декабря 2018

Большая часть вашей проблемы заключается в том, что вы создаете новый AlarmFragment в функции onClick.Вы должны использовать тот, который все еще находится в стеке.Что касается вашего дизайна, у вас должна быть активность, содержащая массив сигналов, а не фрагменты.Вы можете иметь Activity, уведомлять все ее фрагменты, когда данные массива изменились, либо через прослушиватели, либо через функции прямого вызова.

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