Android,检查是不是按下了返回按钮

Posted

技术标签:

【中文标题】Android,检查是不是按下了返回按钮【英文标题】:Android, check if back Button was pressedAndroid,检查是否按下了返回按钮 【发布时间】:2018-01-25 13:24:13 【问题描述】:

我有两种观点和活动。 第一个有一个微调器。第二,您可以创建新条目(存储在活动 1 中微调器的数据库中)。 如果用户完成并按下后退按钮,我必须刷新活动 1 上的微调器(因为新条目)。

是否有可能检查应用程序是否返回活动 1,因为活动 2 中的后退按钮被按下?

我知道,我可以使用 onResume 方法做到这一点,但是每次我返回活动一时都会调用此方法,而不仅仅是因为返回按钮。

我只想在按下后退按钮时刷新微调器。

有什么解决办法吗?我可以检查 onResume 方法中是否按下了后退按钮吗?

【问题讨论】:

您可以在第二个活动中覆盖 onBackPressed() 并在该方法中更新您的数据库条目 【参考方案1】:

您可以在第二个活动中覆盖onBackPressed()。当用户按下后退按钮时,这将被调用。

您可以在setResult() 中将信息作为布尔值hasBackPressed = true 传递

从活动 1 开始活动 2:

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

从活动 2 传回信息:

    @Override
    public void onBackPressed() 
        Intent returnIntent = new Intent();
        returnIntent.putExtra("hasBackPressed",true);
        setResult(Activity.RESULT_OK,returnIntent);
        finish();
    

在 Activity 1 中接收数据:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 

    if (requestCode == 1) 
        if(resultCode == Activity.RESULT_OK)
            boolean hasBackPressed = data.getBooleanExtra("hasBackPressed");
        
        if (resultCode == Activity.RESULT_CANCELED) 
            //Write your code if there's no result
        
    

【讨论】:

这似乎是一个很好的解决方案。出于某种原因,按下后退按钮时不会调用我在活动 1 中的 onActivityResult。 好吧,那是因为我没有用 startActivityForResult(i, 1) 开始第二个活动,而是 startActivity。我想我现在明白了,这是如何工作的。再评论:data.getStringExtra( “有BackPressed”);是字符串,不是布尔值。谢谢。 是的。我的错。它应该是 data.getBooleanExtra() 并返回 boolean。已更新答案。【参考方案2】:

您可以使用startActivityForResult() 启动活动 2 以获得结果。在活动 2 中,您可以在添加新项目时将结果设置为 RESULT_OK。然后,在 Activity 1 的 onActivityResult() 方法中,您可以检查返回的结果并根据需要更新数据。

【讨论】:

On Activity 2 you can set the result to RESULT_OK when new items have been added 添加到这一行 -> 你甚至可以在活动 2 的后按上设置它【参考方案3】:

重写onBackPressed() 方法并在此函数中执行操作。

@Override
public void onBackPressed() 
    // your stuff here

    super.onBackPressed();

【讨论】:

【参考方案4】:

使用startActivityForResult() 启动第二个活动,并在第二个活动的onBackPressed() 中返回一些值。在onActivityResult() 中捕获它,然后刷新那里的微调器。

查看this。

【讨论】:

以上是关于Android,检查是不是按下了返回按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何检测是不是使用 sl4a 按下了菜单按钮?

按下回车键隐藏 android 键盘

找出用户是不是按下了 uinavigationcontroller 中的后退按钮?

在父活动上按下后退按钮

按下了啥按钮输入框C#

在android中检测主页按钮按下