所以,我有一个问题!
我有一个名为X的活动。当用户点击某个按钮时,会显示活动Y. 我希望在收到活动X发送的事件后,可以关闭此活动。
你知道我该怎么办?
答案 0 :(得分:3)
从X发送BroadcastMessage
。注册BroadcastReceiver
并使用相同的IntentFilter
。因此,从x开始,您可以发送预定义的退出消息,该消息将由y活动的onReceive
方法捕获。在那里你可以结束活动Y。
例如:
Y活动
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
if (extras.containsKey("exit")) {
finish();
}
}
}
别忘了注册接收器
registerReceiver(
mMessageReceiver,
new IntentFilter(Constants.YOUR_INTENT_FILTER));
并取消注册
unregisterReceiver( mMessageReceiver);
IN X活动:
send the broadcastmessage using `sendBroadcast(Intent i)`
对于这种内部消息,我更喜欢LocalBoradcastManager
答案 1 :(得分:0)
很遗憾,您无法同时“运行”两项活动。当您启动活动Y时,活动X将经历其生命周期结束。
请参阅:http://developer.android.com/guide/components/activities.html
每次新活动开始时,前一个活动都会停止,但系统会将活动保留在堆栈中(“后堆栈”)。当一个新的活动开始时,它会被推到后面的堆栈上并引起用户的注意。后栈依赖于基本的“后进先出”堆栈机制,因此,当用户完成当前活动并按下后退按钮时,它将从堆栈中弹出(并销毁)并恢复先前的活动。 (后台堆栈将在“任务和后台堆栈”文档中进行更多讨论。)
答案 2 :(得分:0)
BroadcastMessage
收到ActivityX
后,您可以设置一个全局值boolean
您应该在使用Activity Y
时检查bolean的值(可能在onCreate
中)
在Activity Y
如果您获得此布尔值true
(或您在通话BroadcastMessage
时设置的任何内容),则只需致电finish()
事情是android没有同时运行两个活动,所以 没有活动,你无法远程完成它