如何从另一个活动或底部工作表对话框/片段中关闭一个活动
Posted
技术标签:
【中文标题】如何从另一个活动或底部工作表对话框/片段中关闭一个活动【英文标题】:How do I close an activity from another activity or bottomsheet dialog / fragmenr 【发布时间】:2019-07-02 21:39:04 【问题描述】:尝试使用 finish()、finishAfinity() 和意图标志清除任务。
//活动A
public class A
public void finishActivity()
finish();
//活动B
public class B
Activity a = new ActivityA();
a.finishActivity();
我希望 Activity A 被 Activity B 关闭
【问题讨论】:
你想从后台移除ActivityA吗? 不,我不想。 【参考方案1】:您可以使用广播接收器从 Activity B 关闭 Activity A。使用对象从 B 调用 Activity A 将导致空指针异常。这是因为,当 Activity B 启动时,会调用 Activity 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"))
// Finish activity
;
然后按如下方式注册您的广播接收器:
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() 方法中取消注册广播接收器。 我希望这有帮助。欢迎在下方发表评论。祝你好运!
【讨论】:
以上是关于如何从另一个活动或底部工作表对话框/片段中关闭一个活动的主要内容,如果未能解决你的问题,请参考以下文章