2

所以,我有一个问题!

我有一个名为 X 的活动。当用户单击按钮时,将显示活动 Y。我希望在收到活动 X 发送的事件后可以关闭此活动。

你知道我该怎么做吗?

4

3 回答 3

3

BroadcastMessage从 X发送 a 。在 yBroadcastReceiver中用相同的 注册 a 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

于 2013-04-16T14:08:42.990 回答
0

不幸的是,您不能同时“运行”两个活动。当您启动 Activity Y 时,Activity X 将结束其生命周期。

请参阅:http: //developer.android.com/guide/components/activities.html

每次新活动开始时,前一个活动都会停止,但系统会将活动保存在堆栈(“后堆栈”)中。当一个新的活动开始时,它被推到后台堆栈并获得用户关注。后退堆栈遵循基本的“后进先出”堆栈机制,因此,当用户完成当前活动并按下后退按钮时,它会从堆栈中弹出(并销毁)并恢复之前的活动。(Back stack 在 Tasks and Back Stack 文档中有更多讨论。)

于 2013-04-16T14:12:12.763 回答
0
  • BroadcastMessage从那时起,您可以ActivityX设置一个 Global 的值boolean
  • Activity Y您应该在使用(可能在onCreate)时检查该布尔值Activity Y

  • 如果你得到这个布尔值true(或者你在调用时设置的任何值BroadcastMessage),那么只需调用finish()

问题是android没有同时运行两个活动,所以没有活动你不能远程完成它

于 2013-04-16T14:24:00.800 回答