Вы должны сделать onPostExecute
метод вашего AsyncTask
посылает широковещательные к Receiver
в вашем Таб2 фрагмента.
Broadcasting что-то: (в вашем AsyncTask)
Intent intent = new Intent("someFilter");
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
Вы также можете передать примитивные типы и объекты в качестве статистов, используя putExtra()
.
Прием вещания: (в вашем фрагменте TAB2)
// declare the receiver as an atribute of your fragment
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
refreshData();
}
};
// add this to onCreateView
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, new IntentFilter("someFilter"));
// add this to onDestroy
LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
Обратите внимание на IntentFilter
вы используете при создании Намерения и при регистрации приемника. Они должны соответствовать, иначе ничего не произойдет.
Таким образом, при использовании этого вам не нужно передавать фрагмент в качестве параметра в вашу AsyncTask.
hai Мы лучше видим коды, которые вы сделали – Sheychan