Android 重写onBackPressed()时没有响应

Android 重写onBackPressed()时没有响应,android,Android,我当时正在开发一款类似于android上的“Diaro”和“MyDiary”的应用程序 我的应用程序中的主要活动是控制所有其他活动的日记活动。按下add(添加)按钮时,将打开一个新活动,用户在编辑文本字段中输入数据,按下back(后退)按钮时,项目将保存在数据库中并显示在列表中(列表是主活动的一部分) 现在,主活动的问题是,在按下后退按钮时,应用程序没有关闭,而是将控件带回主活动,只是这一次,所做的最后一项不存在,而且只有现在,如果后退按钮再次出现,应用程序才会关闭 我认为可能的解决方案是重写o

我当时正在开发一款类似于android上的“Diaro”和“MyDiary”的应用程序

我的应用程序中的主要活动是控制所有其他活动的日记活动。按下add(添加)按钮时,将打开一个新活动,用户在编辑文本字段中输入数据,按下back(后退)按钮时,项目将保存在数据库中并显示在列表中(列表是主活动的一部分)

现在,主活动的问题是,在按下后退按钮时,应用程序没有关闭,而是将控件带回主活动,只是这一次,所做的最后一项不存在,而且只有现在,如果后退按钮再次出现,应用程序才会关闭

我认为可能的解决方案是重写onBackPressed()函数并在其中编写finish()函数,但这不起作用

活动的代码在这里

无需编写
finish()

super.onBackPressed()
将完成此工作

@Override
public void onBackPressed() {
    super.onBackPressed();
}

我正在使用以下代码。请尝试使用此代码

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event){ 

        if ((keyCode == KeyEvent.KEYCODE_BACK)) { //stop your music here
             // To exit application
                 finish();
        } 
        return super.onKeyDown(keyCode, event); 
    }

我使用这个代码,工作很好

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
   if ((keyCode == KeyEvent.KEYCODE_BACK))
   {       
      back();
   }

   return super.onKeyDown(keyCode, event);
}

public void back()
{
   startActivity(new Intent(this, Home.class));
}

如果这是OP想要的实现,甚至不需要覆盖
onBackPressed()
。这是系统默认的行为。我想,但问题是,即使我删除了该函数,主活动仍然没有关闭。hi@hotveryspicy如果我们使用finish,则表示它将关闭活动。否则,如果我们不使用finish,则意味着按back按钮不会起任何作用。我尝试了其他stackoverflow问题,这些问题与我的问题相匹配,比如这一个,但没有帮助Hi@android noob在每次startActivity()之后;使用finish()行。它将在移动到另一个页面之前关闭活动。希望这能帮助你,当你点击MainActivity中的“添加”按钮时,你可以调用finish()。Vivek你是个天才:D向你致敬,伙计,谢谢:)也许你不需要“return super.onKeyDown(keyCode,event);”。我是一名年轻的开发人员,我只是想帮助«
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
   if ((keyCode == KeyEvent.KEYCODE_BACK))
   {       
      back();
   }

   return super.onKeyDown(keyCode, event);
}

public void back()
{
   startActivity(new Intent(this, Home.class));
}