Java 工具栏中的自定义后退箭头不工作

Java 工具栏中的自定义后退箭头不工作,java,android,xml,android-support-library,android-toolbar,Java,Android,Xml,Android Support Library,Android Toolbar,使用工具栏上的自定义后退箭头后,当我按下它时,它不会返回到应有的位置。如何解决这个问题 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final String actionBarColor = "#FFD300"; ActionBa

使用工具栏上的自定义后退箭头后,当我按下它时,它不会返回到应有的位置。如何解决这个问题

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final String actionBarColor = "#FFD300";

    ActionBar actionBar = getSupportActionBar();
    if(actionBar != null) {
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor)));
        actionBar.setElevation(0);

        Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow);
        setSupportActionBar(tBar);

        tBar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
    }
}
工具栏_yellow.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar     
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/toolbar_yellow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="#FFD300"
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
    app:navigationIcon="@drawable/ic_action_navigation_arrow_back">

    <TextView
        android:id="@+id/toolbar_text"
        android:text="yellow"
        android:textColor="#000099"
        android:textSize="@dimen/abc_text_size_title_material_toolbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="false"
        android:maxLines="2"/>

</android.support.v7.widget.Toolbar>

我想你漏掉了这一行

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
更新:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final String actionBarColor = "#FFD300";

    ActionBar actionBar = getSupportActionBar();
    if(actionBar != null) {
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor)));
        actionBar.setElevation(0);

        Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow);
        setSupportActionBar(tBar);

       getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_navigation_arrow_back);

        tBar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
    }
}

如果没有任何自定义的后退按钮,甚至可以通过在manifest.xml中设置一行来显示它

<activity
            android:name="com.example.myfirstapp.DisplayMessageActivity"
            android:label="@string/title_activity_display_message"
            android:parentActivityName="com.example.myfirstapp.MainActivity" >
            <!-- Parent activity meta-data to support 4.0 and lower -->
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.myfirstapp.MainActivity" />
        </activity>
并将其作为

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

我将您的代码简化为以下内容。由于要在
Toolbar\u yellow.xml
布局文件中设置
工具栏
颜色,因此不需要在代码中进行设置

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow);

    setSupportActionBar(tBar);
    tBar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });

}

让我知道这是否有帮助。

我相信这肯定会显示
向上
(实际上它不是
向后
箭头)。这仍然没有什么区别,我使用的是一个可自定义绘制的后退箭头,而不是android的。@MacaronLover再次查看我的更新答案。customarrown后退按钮在您的代码中哪里?@MacaronLover刚刚签出我添加到代码中的更新答案。我发布了一个答案,您可以查看它。您的逻辑似乎有点不正确。如果
actionBar!=null,则
setSupportActionBar()
应引发异常。您确定它正在输入
if
块吗?你需要一个
NoActionBar
主题,或者类似的主题,用于你的
活动
@MacaronLover,我很好奇为什么你的
工具栏中有一个
文本视图
。如果要设置
工具栏
标题,您可以在活动中使用
setTitle(int)
setTitle(CharSequence)
方法,而无需使用
TextView
。我知道,但我有一个自定义方法!
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow);

    setSupportActionBar(tBar);
    tBar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });

}