Android 工具栏中的“向上”按钮不显示';我什么也不做

Android 工具栏中的“向上”按钮不显示';我什么也不做,android,android-studio,android-toolbar,Android,Android Studio,Android Toolbar,我在我的应用程序中设置了工具栏(这是第一次),但我无法设置Home(/up)按钮在单击时执行任何操作。 我有3个活动(MainActivity,Second,Third),我在所有3个活动中都定义了工具栏,但当我在每个活动中单击Home按钮时,什么都没有发生。我希望该按钮执行其(据我所知)默认操作,即返回Home活动,即“MainActivity” 以下是一些相关代码: 工具栏布局(名称:app_bar.xml): 第二项活动: protected void onCreate(Bundle sa

我在我的应用程序中设置了工具栏(这是第一次),但我无法设置Home(/up)按钮在单击时执行任何操作。 我有3个活动(MainActivity,Second,Third),我在所有3个活动中都定义了工具栏,但当我在每个活动中单击Home按钮时,什么都没有发生。我希望该按钮执行其(据我所知)默认操作,即返回Home活动,即“MainActivity”

以下是一些相关代码: 工具栏布局(名称:app_bar.xml):

第二项活动:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        btnSecond = (Button) findViewById(R.id.btn_second);

        toolbar = (Toolbar) findViewById(R.id.toolbar_id);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);

        openThirdActivity();
    }

    public void openThirdActivity(){
        btnSecond.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent("com.example.noamm_000.finaltoolbarproject.Third");
                startActivity(intent);
            }
        });
    }
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);

        toolbar = (Toolbar) findViewById(R.id.toolbar_id);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
    }

    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.toolbar_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }
第三十届:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        btnSecond = (Button) findViewById(R.id.btn_second);

        toolbar = (Toolbar) findViewById(R.id.toolbar_id);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);

        openThirdActivity();
    }

    public void openThirdActivity(){
        btnSecond.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent("com.example.noamm_000.finaltoolbarproject.Third");
                startActivity(intent);
            }
        });
    }
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);

        toolbar = (Toolbar) findViewById(R.id.toolbar_id);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
    }

    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.toolbar_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }
您可以看到,所有3个活动“onCreate”函数基本相同。。 当我启动我的应用程序时,我可以在所有3个活动中看到工具栏,我可以在所有活动中看到后退箭头,但单击它什么也不做。 我知道我可以设置
工具栏。setNavigationOnClickListener
,但我只想让它成为默认操作,即“回家”活动。。。。 非常感谢你, 诺姆

试试这个:

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
            case android.R.id.home:
               //finish(); or Do wahtever you wnat to do
                return true;
    }
    return true;
}
试试这个:

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
            case android.R.id.home:
               //finish(); or Do wahtever you wnat to do
                return true;
    }
    return true;
}
像这样试试

  @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == android.R.id.home) {
            Intent i = new Intent(CurrentActivity.this, HomeActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(i);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
像这样试试

  @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == android.R.id.home) {
            Intent i = new Intent(CurrentActivity.this, HomeActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(i);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

如果您有父活动,请遵循以下代码:

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case android.R.id.home:
            if(NavUtils.getParentActivityIntent(this)== null) {
                onBackPressed();
            }else{
                NavUtils.navigateUpFromSameTask(this);
            }
            break;
    }
    return super.onOptionsItemSelected(item);
}

如果您有父活动,请遵循以下代码:

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case android.R.id.home:
            if(NavUtils.getParentActivityIntent(this)== null) {
                onBackPressed();
            }else{
                NavUtils.navigateUpFromSameTask(this);
            }
            break;
    }
    return super.onOptionsItemSelected(item);
}

在你的活动中试试这个

@Override
public boolean onOptionsItemIdSelected(int id) {   
    switch (id) {
            case R.id.home:
                //do stuff 
                break;
    }
    return true;
}

在您的情况下,我建议您创建一个AbstractActivity,它继承您的所有活动。因此您可以考虑许多行为,包括工具栏按钮的管理

@Override
public boolean onOptionsItemIdSelected(int id) {   
    switch (id) {
            case R.id.home:
                //do stuff 
                break;
    }
    return true;
}


在您的情况下,我建议您创建一个AbstractActivity,它继承您的所有活动。因此,您可以考虑许多行为,包括工具栏按钮的管理

检查谢谢,它工作了,但此按钮不存在defaullt函数,我不必使用onOptionsItemSelected函数定义它?检查谢谢,它工作了,但此按钮不存在defaullt函数,一个我不必使用onOptions ItemSelected函数定义的按钮?谢谢,它工作了,但是这个按钮不存在defallt函数吗,我不必使用OnOptions ItemSelected函数来定义它?@Noam..这是此按钮的默认函数..如果您希望工具栏中的“向上”按钮必须执行某些特定任务,则必须定义它…@Noam My code将带您到父活动,而不仅仅是返回堆栈。我还添加了Intent.Flag来清除后台堆栈,它在进行家庭活动时非常有用,并且可以在用户使用“Up”时阻止后台堆栈陷入混乱button@sarurabh古普塔我明白你的意思,只是我在这个链接中遵循了教程,他根本没有使用OnOptionsItemSelected方法,但是因为他使用的是ActionBar而不是toolbar,可能会有所不同,我不知道,我还是会坚持你和其他人在这里回答我的问题。再次感谢。@Noam..是的,可能是这样,这可能是不同之处…是的!如果我的答案对你有帮助,那么请标记为已接受!谢谢,它工作了,但是这个按钮不存在defaullt功能吗,我不必使用OnOptions ItemSelected函数来定义它?@Noam..这是此按钮的默认函数..如果您希望工具栏中的“向上”按钮必须执行某些特定任务,则必须定义它…@Noam My code将带您到父活动,而不仅仅是返回堆栈。我还添加了Intent.Flag来清除后台堆栈,它在进行家庭活动时非常有用,并且可以在用户使用“Up”时阻止后台堆栈陷入混乱button@sarurabh古普塔我明白你的意思,只是我在这个链接中遵循了教程,他根本没有使用OnOptionsItemSelected方法,但是因为他使用的是ActionBar而不是toolbar,可能会有所不同,我不知道,我还是会坚持你和其他人在这里回答我的问题。再次感谢。@Noam..是的,可能是这样,这可能是不同之处…是的!如果我的答案对你有帮助,那么请标记为已接受!谢谢,它工作了,但是这个按钮不存在defaullt函数吗?我不需要使用onoptionItemSelected函数定义它吗?谢谢,它工作了,但是这个按钮不存在defaullt函数吗?我不需要使用onoptionItemSelected函数定义它吗?它应该是Android.R.id.home(没有adnroid这个词-什么都不会发生)它工作了,但是这个按钮不存在defaullt函数吗?我不需要使用onOptionsItemSelected函数定义这个函数?关于你的建议-听起来不错,will Try这是整个工具栏按钮的默认函数:)它应该是Android.R.id.home(没有adnroid这个词-什么都不会发生)它工作了,但是这个按钮不存在defaullt函数吗?我不需要使用onOptionsItemSelected函数定义这个函数?关于你的建议-听起来不错,will Try这是整个工具栏按钮的默认函数:)