Я занимаюсь разработкой приложения для Android, которое время от времени получает информацию с локального сервера. Для навигации в приложении я выбрал навигационную панель, которая заменяет выбранные фрагменты на
getSupportFragmentManager().beginTransaction().replace(R.id.flContent, fragment).addToBackStack(null).commit();
добавление выбранного фрагмента в backStack для правильной навигации по BackPress.
Фрагменты инициализируются в моей MainActivity в
private OverviewFragment overviewFragment;
private IncidentFragment incidentFragment;
private SettingsFragment settingsFragment;
protected void onCreate(){
...
overviewFragment = new OverviewFragment();
incidentFragment = new IncidentFragment();
settingsFragment = new SettingsFragment();
...
}
Теперь я хочу обновить TextView из информации, полученной с сервера. Я попробовал это с помощью метода фоллинга:
public void setIncidentDetails(NetworkIncident incident) {
if (incident != null) {
ArrayList<String> medicNames = null;
((TextView) view.findViewById(R.id.inLocationText)).setText(incident.getLocation());
((TextView) view.findViewById(R.id.inKeywordText)).setText(incident.getKeyword());
if(incident.isEmsCalled()) {
((TextView) view.findViewById(R.id.inEmsText)).setText("Rettungsdienst alarmiert");
} else {
((TextView) view.findViewById(R.id.inEmsText)).setText("Kein Rettungsdienst alarmiert");
}
for (int i = 0; i < incident.getMedics().size(); i++){
medicNames = new ArrayList<String>();
NetworkMedic currentMedic = incident.getMedics().get(i);
medicNames.add(currentMedic.getForename() + " " + currentMedic.getSurename());
}
((TextView) view.findViewById(R.id.inMedicText)).setText(medicNames.toString());
}
}
Это работает, только если я ранее открыл фрагмент, содержащий TextViews. В противном случае я получаю исключение NullPointerException для "view.findViewById ...". Очевидно, потому что он не был инициализирован раньше;)
У меня вопрос, есть ли другой способ обновить TextView, если фрагмент не отображается (другой фрагмент выбран в NavigatinoDrawer) или если он даже не был выбран.
(Может быть, какой-то глобальный файл ресурсов, из которого фрагмент извлекает информацию о Create / onResume)?