Вы можете использовать широковещательный приемник, чтобы закрыть действие A из действия B. Вызов действия A из B с использованием объекта приведет к исключению нулевого указателя.Это связано с тем, что при запуске действия B вызывается метод onPause () операции A.Use BroadCastReceiver as below
BroadCastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent intent) {
String action = intent.getAction();
if (action.equals("finish_activity_a")) {
//Do Something Else
}
}
};
Затем зарегистрируйте приемник вещания следующим образом:
try {
//Register BroadcastReceiver
registerReceiver(broadcastReceiver, new IntentFilter(BroadCastActions.actionUpdateAppOptions));
} catch (IllegalArgumentException e){
e.printStackTrace();
}
Вы можете зарегистрировать приемник вещания после его инициализации вметод onCreate, как описано выше или в ваших методах onStart (), onResume (), onRestart ().
Чтобы отменить регистрацию вашего широковещательного приемника, выполните следующие действия:
try {
//Check If BroadCast Was Received
if (broadcastReceiver != null) {
getActivity().unregisterReceiver(broadCastReceiver);
}
} catch (IllegalArgumentException e){
e.printStackTrace();
}
Вы можете отменить регистрацию вашего широковещательного приемника с помощью методов onCreate () или onStop (), onPause (), onDestroy ().Я надеюсь, что это поможет.Не стесняйтесь комментировать ниже.Удачи!