【问题标题】:"Back" button on Action bar - Android . How to go "back"?操作栏上的“返回”按钮 - Android 。如何“回去”?
【发布时间】:2013-07-14 10:28:35
【问题描述】:

Action Bar

我说的是(图片中的数字 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);
    }

这是使错误按钮与操作栏一起膨胀的功能。我试图替换整个代码,并调用“完成”函数,但失败得很惨。 我找不到专门为左上角按钮设计的功能...

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

【问题讨论】:

    标签: java android eclipse button action


    【解决方案1】:

    我认为最简单的出路如下:

    我假设您从活动A 开始活动B。现在从活动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 里面可以放上面的代码。因此,现在这段代码对您的所有活动都有效,并且将为所有活动实现该功能。基本上这种东西 (Inheritance) 可以在任何时候使用,只要有一些通用特性适用于你的许多类。

    如果您收到任何错误,请在需要进一步帮助时发布您的LogCat。 希望这对您有所帮助。

    【讨论】:

    • 您好!我试过了,但它仍然给出了同样的问题。但是,我做了一件事让它工作:- 我删除了整个 switch() 函数的块,而是把 this.finish();连同默认返回 super.onOptionsItemSelected(item);这会导致任何问题吗?我的意思是删除该功能?它似乎工作得很好......另外,我应该在哪个文件中定义 AbstractActivity 类?还是一个新的单独的类文件?我应该把它保存在哪个文件夹中?
    • 我不确定这可能会产生什么影响。它是否完成单击操作栏上的任何按钮的活动(因为我们没有指定按钮)?对于第二件事,如果你想这样做,那么该类可以是与其他 java 文件位于任何同一文件夹中的单独类。
    • 另外,当您说答案中的代码不起作用时,您的onCreate() 函数中有getActionBar().setDisplayHomeAsUpEnabled(true); 吗?这是为了向用户显示选择主页将返回上一级而不是应用的顶层。如果你没有然后尝试在 onCreate()
    • 感谢您的帮助! ....但它只是击中了我..“为什么我需要另一个返回按钮”......如果他们想返回,只需按下硬件返回按钮会更容易和有效......我决定删除我的应用程序中的所有操作栏XD,没有按钮没问题哈哈:)
    • android.R.id.home 在 api 级别 11 中添加了什么是为了向后兼容?
    【解决方案2】:

    只是给出@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);
    }
    

    【讨论】:

      猜你喜欢
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      相关资源
      最近更新 更多