在工具栏上显示返回箭头

11 浏览
0 Comments

在工具栏上显示返回箭头

我正在将我的应用程序从ActionBar迁移到Toolbar。\n但是我不知道如何在Toolbar上显示和设置返回箭头的点击事件,就像在ActionBar上一样。\n在ActionBar中,我调用了mActionbar.setDisplayHomeAsUpEnabled(true)。\n但是在Toolbar中没有类似的方法。\n有人曾经遇到过这种情况并找到一种解决方法吗?

0
0 Comments

问题:在工具栏上显示返回箭头的原因和解决方法

在这个问题中,有很多实现方法,下面是我最喜欢的方法:

布局:


活动:

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控件。

总之,通过在工具栏上显示返回箭头,可以提升用户体验,使得用户可以方便地返回上一个界面。以上提到的解决方法是实现这一功能的可行方案。

0
0 Comments

问题:如何在工具栏上显示返回箭头?

原因:只有在将工具栏设置为操作栏时,才能实现在工具栏上显示返回箭头。

解决方法:

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);
}

这样就可以在工具栏上显示返回箭头了。

0
0 Comments

问题的原因是可能没有正确设置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图标。

以上是问题的原因及解决方法。

0