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

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

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

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

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

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

【问题讨论】:

  • 您可以在第二个活动中覆盖 onBackPressed() 并在该方法中更新您的数据库条目

标签: java android button android-activity back


【解决方案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

    【讨论】:

      猜你喜欢
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多