如何返回之前的活动?

Posted

技术标签:

【中文标题】如何返回之前的活动?【英文标题】:How to go back to previous activite(s)? 【发布时间】:2017-08-07 00:54:47 【问题描述】:

所以我有活动 A、B 和 C。活动 A 和 B 都转到活动 C。当我在活动 C 上并按下 mySupportActionBar 上的返回主页按钮时,我想返回活动状态(从我把它留在的州)我来自。我将如何做到这一点?

这是我的 onOptionsItemSelected()。所以目前,它会回到我在清单中分配的指定父活动,以避免我的应用程序崩溃。因为父活动需要来自意图的字符串。

@Override
    public boolean onOptionsItemSelected(MenuItem item)
    
        int id = item.getItemId();
        if(id == android.R.id.home)
        
            NavUtils.navigateUpFromSameTask(this);
        
        return super.onOptionsItemSelected(item);
    

我也很想完成这个 onBackPressed()。

【问题讨论】:

不要声明父活动,只调用finish()而不是调用NavUtils.navigateUpFromSameTask(this) 所以在清单中,我需要摆脱父活动吗? 实际上,它可以在不摆脱父活动声明的情况下工作。试试看会发生什么。 【参考方案1】:

当您在内部活动中时,返回箭头按钮是“主页”按钮,因此您可以完成内部活动,或者只是调用返回按钮

@Override
public boolean onOptionsItemSelected(MenuItem item) 
    switch (item.getItemId()) 
        case android.R.id.home:
            onBackPressed();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    

【讨论】:

【参考方案2】:

使用android.R.id.home

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

【讨论】:

【参考方案3】:

您也可以使用工具栏上的setNavigationOnClickListener 来触发返回按钮。

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_filter_category);

        setSupportActionBar(toolbar);

        if (getSupportActionBar() != null) 
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowTitleEnabled(false);

            //back button action
            toolbar.setNavigationOnClickListener(view -> finish());
        
    

【讨论】:

以上是关于如何返回之前的活动?的主要内容,如果未能解决你的问题,请参考以下文章

从其他活动返回到同一片段时,如何保存和恢复片段中 RecyclerView 的滚动位置?

Android:返回上一个活动

如何退出活动并将其恢复到之前的状态?

如何在返回活动中刷新返回的 amx 页面

如何返回关闭活动之间的活动?

如何禁用“返回”某些活动?