Android - 与其他活动互动

时间:2013-04-16 14:05:45

标签: android events

所以,我有一个问题!

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

你知道我该怎么办?

3 个答案:

答案 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没有同时运行两个活动,所以   没有活动,你无法远程完成它