在工具栏上显示返回箭头
问题:在工具栏上显示返回箭头的原因和解决方法
在这个问题中,有很多实现方法,下面是我最喜欢的方法:
布局:
活动:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setNavigationOnClickListener(new View.OnClickListener() { public void onClick(View v) { // back button pressed } });
使用主题属性比这个问题中的大多数其他建议更好,而不是使用setNavigationOnClickListener(),你可以在'onOptionsItemSelected()'中添加'case android.R.id.home:'。
case android.R.id.home对我没有用。所以在搜索了一段时间后,你的答案解决了问题。谢谢。
这是最真实的解决方法,特别适用于想要使用Android系统默认返回图标的情况。
使用toolbar.setNavigationOnClickListener { onBackPressed() }没有默认图标。
在我看来,这是最好的答案,因为它不需要修改ActionBar的状态。
如果没有将其设置为支持ActionBar,这是操作工具栏的最佳答案。
崩溃,工具栏是错误的类型。
文章整理如下:
在Android应用程序中,有时我们希望在工具栏上显示一个返回箭头,以便用户可以返回上一个界面。下面是一种实现方法:
首先,在布局文件中添加一个Toolbar控件,并设置其属性,如下所示:
接下来,在相应的Activity中,找到Toolbar控件,并设置点击事件,如下所示:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setNavigationOnClickListener(new View.OnClickListener() { public void onClick(View v) { // back button pressed } });
这样,当用户点击工具栏上的返回箭头时,就会触发相应的点击事件。
除了上述方法,还有其他一些解决方案。例如,可以在'onOptionsItemSelected()'方法中添加'case android.R.id.home:'来处理返回箭头的点击事件。然而,有些用户反馈说,这种方法对他们并不起作用。
最好的解决方法是使用上述提到的方法,因为它不需要修改ActionBar的状态,并且可以使用Android系统默认的返回图标。同时,使用主题属性也比其他方法更好,因为它的实现更简洁。
当然,在实际使用过程中,可能会遇到一些问题。例如,有些用户报告说,他们在使用上述方法时遇到了崩溃问题,原因是Toolbar的类型错误。在这种情况下,需要检查代码中是否正确引用了Toolbar控件。
总之,通过在工具栏上显示返回箭头,可以提升用户体验,使得用户可以方便地返回上一个界面。以上提到的解决方法是实现这一功能的可行方案。
问题:如何在工具栏上显示返回箭头?
原因:只有在将工具栏设置为操作栏时,才能实现在工具栏上显示返回箭头。
解决方法:
1. 在onCreate方法中,将工具栏设置为操作栏:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);
2. 在getSupportActionBar()方法不为空的情况下,将返回箭头显示出来:
if (getSupportActionBar() != null){ getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); }
3. 在onOptionsItemSelected方法中,处理返回箭头的点击事件:
public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); } return super.onOptionsItemSelected(item); }
这样就可以在工具栏上显示返回箭头了。
问题的原因是可能没有正确设置Toolbar作为ActionBar,或者没有正确调用setDisplayHomeAsUpEnabled和setDisplayShowHomeEnabled方法。
解决方法如下:
1. 如果使用ActionBarActivity,可以通过以下方式告诉Android使用Toolbar作为ActionBar:
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar);
然后调用以下方法:
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true);
2. 在与ActionBarActivity相关联的Fragment中使用以下方式:
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); ((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);
3. 如果没有使用ActionBarActivity,或者想要在没有设置为SupportActionBar的Toolbar上显示返回箭头,可以使用以下方式:
mActionBar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back)); mActionBar.setNavigationOnClickListener(new View.OnClickListener() { public void onClick(View v) { //点击返回箭头时的操作 } });
4. 如果使用的是android.support.v7.widget.Toolbar,可以在AppCompatActivity中添加以下代码:
public boolean onSupportNavigateUp() { onBackPressed(); return true; }
注意,可以从Google的官方Material Design图标库中获取ic_action_back图标。
以上是问题的原因及解决方法。