如何返回之前的活动?
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());
【讨论】:
以上是关于如何返回之前的活动?的主要内容,如果未能解决你的问题,请参考以下文章