操作栏上的“返回”按钮 - Android。如何返回?

7

这里输入图片描述

操作栏

我正在谈论的是(图片中的数字1),位于屏幕左上角带有小箭头和应用程序图标的按钮。当我们选择“黑色活动”模板时,它会自动定义。

我的应用程序具有相当庞大的层次结构图,现在已经有约25个活动。 基本上我只展示一些教程,并按照类别进行导航。

现在,每个屏幕上都有“返回”(?)操作栏按钮,我确实想保留它。代码没有错误,但当我实际按下该按钮时,应用程序停止工作。 我想要的是,只需使用该(数字1)按钮复制实际的后退按钮功能即可。当我按下它时,最上层的屏幕应关闭,最近的一个应打开。只需关闭屏幕即可。

我尝试过:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:

            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

这是用来扩展带有操作栏的故障按钮的函数。我尝试替换整个代码并调用“完成”函数,但失败了。我无法找到一个专门用于最左上角按钮的功能...

当触摸此按钮时,我希望在堆栈中最顶部(前台)的屏幕关闭。如何做到这一点?

2个回答

31

我认为最简单的方法如下:

我假设你是从活动 A 启动活动 B。现在,当你按操作栏左上角的返回按钮时,你想回到活动 A。只需在那里调用 this.finish()ActivityName.this.finish()

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            this.finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

这应该结束你当前的活动。但是如果你有许多活动,那么你可能需要在所有活动中都这样做。为了节省自己的精力,你可以创建一个叫做 AbstractActivity 的类;它扩展了 Activity。然后你可以扩展所有其他活动类以扩展该类(AbstractActivity)。在 AbstractActivity 中,你可以放置上述代码。因此,现在那段代码对于你所有的活动都是有效的,并且那个功能将被实现到所有活动中。基本上,当有一些常见特征适用于你的许多类时,可以随时使用这种东西 (继承)。

如果你收到任何错误,请发布你的 LogCat 如果你需要进一步的帮助。希望这可以帮到你。


嗨!我试过了,但它仍然出现相同的问题。不过,我做了一件事让它工作了:- 我删除了整个switch()函数块,并将this.finish();与默认返回super.onOptionsItemSelected(item);放在一起。这样做会有任何问题吗?我的意思是删除那个函数?它似乎完全正常...另外,我应该在哪个文件中定义AbstractActivity类?或者一个新的单独的类文件?我应该把它保存在哪个文件夹中? - user2580712
我不确定那可能会有什么后果。如果我们没有指定按钮,它是否会在单击操作栏上的任何按钮时完成活动?至于第二件事,如果您想这样做,那么该类可以是其他Java文件所在的同一文件夹中的一个单独的类。 - Shobhit Puri
另外,当您说答案中的代码无法工作时,您的onCreate()函数中是否有getActionBar().setDisplayHomeAsUpEnabled(true);?它是用来向用户显示选择主页将返回一个级别而不是应用程序的顶层。如果没有,请尝试在onCreate()中添加该代码。 - Shobhit Puri
感谢帮助!但是我突然想到,“我为什么需要另一个返回按钮”……如果他们想要返回,只需按下硬件返回按钮就更容易和高效了……我决定删除我的应用程序中的所有操作栏XD,没有按钮也没有问题哈哈:) - user2580712
android.R.id.home 在 API 级别 11 中添加,用于向后兼容性是什么? - Muhammad Babar
显示剩余4条评论

4

只是提供了@shobhit puri给出的基本代码...

要调用操作栏返回按钮,请在onCreate()方法中添加以下代码,以及onOptionsItemSelected....

protected void onCreate(Bundle savedInstanceState) 
{
    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true);
    super.onCreate(savedInstanceState);     
    setContentView(R.layout.activity_information);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        this.finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接