【问题标题】:fire onPause on device back button but not on button click在设备后退按钮上触发 onPause 但在按钮单击时不触发
【发布时间】:2013-05-29 20:43:47
【问题描述】:

我正在通过单击一项活动的按钮打开新活动。新活动包含名为返回的图像按钮。现在我希望当任何人点击移动设备的后退按钮时,它会触发 onPause 或说关闭应用程序,但是当任何人点击返回图像按钮时,应用程序不会触发 onPause 并且它会继续最后一个活动。 怎么办?

【问题讨论】:

    标签: android onpause


    【解决方案1】:

    如果您在进入第二个活动时在第一个活动中调用了finish(),并且如果您想在第二个活动中的“返回”按钮的点击事件中再次进入第一个活动,那么您需要调用一个 Intent从第二个活动转到第一个活动。 但是,如果您在进入第二个活动时没有在第一个活动中调用finish(),并且您想在第二个活动中的“返回”按钮的点击事件上再次进入第一个活动,那么只需在点击事件上调用finish()第二个活动中的“返回”按钮。

    【讨论】:

    • 要在活动之间传递值,您可以使用我的第二个答案中的代码。
    【解决方案2】:

    我从您的其他问题中看到了您的代码,因此您需要从 onPause 中删除 finish() 并将 finish() 添加到您的“返回”按钮侦听器中。

    如果您想将其保留在堆栈中(以便返回),请不要调用 finish()。

    例子:

    1. Activity A 启动 Activity B,Activity B 启动 Activity C。(还没有调用 finish())
    2. 然后当你从 C 中返回时,调用 finish() 你将 参见活动 B。
    3. 然后当你从 B 回去时,调用 finish(),你会看到 Activity A。

    【讨论】:

    【解决方案3】:

    这是您可以在不同活动之间传递值的方式。

     Intent i = new Intent(A.this, B.class); 
     i.putExtra("numbers", array); 
     startActivity(i);
    

    【讨论】:

    • 不,我不想在这里开始新的活动。我正在考虑传递布尔值,然后在最后一个活动上检查 onPause(),然后根据它调用 finish()。
    • 这只是一个例子。您也可以通过意图发送布尔值。从活动 A 转到活动 B 时,您可以发送布尔值。您可以在活动 B 中接收此值。现在在活动 B 的 onPause() 中,您可以检查此值并采取相应措施。
    猜你喜欢
    • 2021-12-25
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多