Как закрыть мероприятие из другого занятия или диалогового окна / фрагмента - PullRequest
0 голосов
/ 08 февраля 2019

Испытано Использование Finish (), finishAfinity () и намерение помечают пометкой задачи очистки.

// Действие A

public class A{
 public void finishActivity(){
     finish();
 }
}

// Действие B

 public class B{

 Activity a = new ActivityA();
     a.finishActivity();
}

Я хочу, чтобы действие A было закрыто действием B

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете использовать широковещательный приемник, чтобы закрыть действие 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 ().Я надеюсь, что это поможет.Не стесняйтесь комментировать ниже.Удачи!

...