Моя активность создает фрагменты динамически, и они не создаются сразу же после запуска (скрыты). Поэтому мне нужно в основном идентифицировать свои фрагменты, чтобы я мог отправлять данные из них и из них. Я продолжаю получать ссылку на нулевой объект при попытке вызвать функцию фрагмента (addAthleteToList) из моего основного действия. Говорит, что мой объект спортсмена равен нулю. Я правильно определяю (создаю) ссылки на фрагменты? СпасибоЯ правильно использую findFragmentByTag
Если нет, как создать теги для моих фрагментов?
Основная функция Деятельность, которая передает данные фрагмента B (AthletesList):
// Interface function
// Sends athlete information to athlete list
@Override
public void send(Athlete athlete) {
Log.e("", "Main Activity: " + athlete.getFirstName());
AthletesList athletesList = (AthletesList) getSupportFragmentManager().findFragmentByTag("athleteList");
ArrayList<String> athleteEvents = new ArrayList<String>();
athleteEvents = athlete.getEvents();
for(int i = 0; i < athleteEvents.size(); i++) {
Log.e("", "Athlete Event: " + athleteEvents.get(i).toString());
switch (athleteEvents.get(i).toString()){
case "4 x 400":
athletesList.addAthleteToList(athlete, 1);
break;
case "1-Mile":
break;
case "100-Meter":
break;
}
}
}
Фрагмент A:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
btnAddAthlete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Athlete athlete = new Athlete();
athlete.setFirstName(editFirstName.getText().toString());
athlete.setLastName(editLastName.getText().toString());
athlete.setAge(Integer.parseInt(editAge.getText().toString()));
athlete.setEvents(athleteEvents);
athlete.setGrade(editGrade.getText().toString());
athlete.setTier(Integer.parseInt(editTier.getText().toString()));
Log.e("", "Athlete Name: " + athlete.getFirstName() + " " + athlete.getLastName());
AthletesList athletesList = new AthletesList();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.frameLayout, athletesList, "athletesList").commit();
// interface sends athlete to main activity
communicator.send(athlete);
}
});
}