Я новый разработчик для Android, и я попытался создать приложение для туристов "
. В моем приложении есть HomeFragment с тремя кнопками:" Достопримечательности "," События "," Гостиницы "
*.1004 *
}
, поскольку все содержимое одинаковое (отличается только название категории). Я решил использовать MasterFragment, чтобы не дублировать код для каждой категории.
Все«Данные» создается в HomeFragment, и каждый раз, когда пользователь нажимает на одну из кнопок, приложение создает новый MasterFragment и отправляет ему данные в Bundle, чтобы сообщить ему, какие данные ему нужно показать.
Вот так выглядит «MasterFragment»:
public class MasterFragment extends Fragment {
private ArrayList<Category> mData;
public MasterFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle bundle) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.item_list, container, false);
mData = (ArrayList<Category>)getArguments().getSerializable("Data");
// Create an {@link WordAdapter}, whose data source is a list of {@link Category}s. The
// adapter knows how to create list items for each item in the list.
CategoryAdapter adapter = new CategoryAdapter(getActivity(), mData, R.color.colorAccent);
// Find the {@link ListView} object in the view hierarchy of the {@link Activity}.
// There should be a {@link ListView} with the view ID called list, which is declared in the
// word_list.xml layout file.
ListView listView = (ListView) rootView.findViewById(R.id.list);
// Make the {@link ListView} use the {@link WordAdapter} we created above, so that the
// {@link ListView} will display list items for each {@link Word} in the list.
listView.setAdapter(adapter);
return rootView;
}
}
Все работает нормально, когда пользователь нажимает, например, AttractionButton, приложение показывает содержимоеотлично (только дизайн плохой LOL) Но !! когда я нажал «кнопку назад» и вернулся в HomeFragment, а затем снова нажал на кнопку Attraction, она дублирует Arraylist (от 6 пунктов до 12и так далее ...)
Я исправил проблему с помощью init переменных ArrayList внутри метода "initCategoriesData"
Но я до сих пор не понимаю, почему приложение действует так, как онаЯ ценю хорошее объяснение этому, это действительно поможет мне лучше понять, как все это работает
Заранее спасибо, Нив :)