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,检查是不是按下了返回按钮的主要内容,如果未能解决你的问题,请参考以下文章