Вы можете отправить данные (что-то маленькое, например строку или идентификатор) с помощью трансляции.
На вкладке, где генерируются данные
final Intent i = new Intent(IConstants.UPDATE_SPINNER);
i.putExtra(IConstants.DATA_UPDATE, data);
this.sendBroadcast(i)
IConstants.UPDATE_SPINNER и DATA_UPDATE - это просто строки, используемые для идентификации вашего сообщения получателем. Вы также можете поместить их в свой основной вид деятельности вместо интерфейса, который я использовал.
На вкладке со своим счетчиком объявите внутренний класс для приемника вещания, он может получить доступ к счетчику внешнего класса.
private final class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
if( IConstants.UPDATE_SPINNER.equals(intent.getAction()) ) {
final String data = intent.getIntExtra(IConstants.DATA_UPDATE, "");
// update your spinner
return;
}
// process other messages ...
}
}
Зарегистрируйте приемник вещания следующим образом, например, в onCreate () или onResume ()
this.broadcastReceiver = new MyBroadcastReceiver();
final IntentFilter f = new IntentFilter(IConstants.UPDATE_SPINNER);
// for more actions you can add them like this:
// f.addAction(IConstants.UPDATE_ONOTHER_WIDGET);
this.registerReceiver(this.broadcastReceiver, f);
Не забудьте отменить регистрацию в onDestroy () или onPause ().
Другим вариантом будет использование обработчика и отправка сообщений обработчику. Однако вам понадобится обработчик, который находится в получателе, чтобы быть доступным в отправителе. Таким образом, ваши фрагменты или действия (вкладки) будут сильнее связаны.