2015-08-28 2 views
0

У меня есть два фрагмента, Tab1 и Tab2. Tab1 вызывает мою AsyncTask, а в onPostExecute я пытаюсь заставить его вызвать метод Tab2 refreshData().Вызов метода фрагмента из отдельной асинтезы

Я пробовал смотреть на Access fragment method from asynctask postexecute, но мне трудно понять, как просто использовать Tab2 в качестве параметра AsyncTask.

Любое понимание или если есть лучший способ сделать это, будем очень признательны.

+0

hai Мы лучше видим коды, которые вы сделали – Sheychan

ответ

0

Вы должны сделать 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.

Смежные вопросы