如何从其他活动或底部工作表对话框/片段中关闭活动

问题描述 投票:1回答:1

尝试使用finish(),finishAfinity()和intent标记清除任务。

//活动A.

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

//活动B.

 public class B{

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

我希望活动A被活动B关闭

android android-fragments android-activity broadcastreceiver android-fragmentactivity
1个回答
0
投票

您可以使用广播接收器关闭活动B中的活动A.使用对象从B调用活动A将导致空指针异常。这是因为,当活动B开始时,将调用活动A的onPause()方法。 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()方法中取消注册广播接收器。我希望你有所帮助。请随时在下面发表评论。祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.