设置工具栏主页导航按钮以关注后台堆栈,Android

时间:2017-04-21 09:42:31

标签: java android

我已设置工具栏并添加了一个主页导航按钮,如下所示;

Toolbar toolbar;
toolbar = (Toolbar) findViewById(R.id.toolbar_home);

//Setup toolbar
toolbar.setTitle("Home");

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    toolbar.setTitleTextColor(getResources().getColor(R.color.icons,null));
}else{
    toolbar.setTitleTextColor(getResources().getColor(R.color.icons));
}

setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
} else {
    Log.w("Home", "toolbar null");
}

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //Navigate backwards as android back button
    }
});

我希望当我按下工具栏的后退按钮时,它会作为Android后退按钮向后导航到后台。enter image description here

5 个答案:

答案 0 :(得分:0)

在活动中添加此方法:

@Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        if(item.getItemId() == android.R.id.home){
            onBackPressed();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

答案 1 :(得分:0)

我很长时间没有发现这个问题。

HomeFragment:第一次加载的第一个片段

getFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
                @Override
                public void onBackStackChanged() {
                    HomeFragment currentHomeFragment = null;
                    currentHomeFragment = (HomeFragment) getFragmentManager().findFragmentByTag("HOME_FRAGMENT");
                    if (currentHomeFragment != null && currentHomeFragment.isVisible()) {
                        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
                        toggle.syncState();
                        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                drawer.openDrawer(GravityCompat.START);
                            }
                        });
                    } else {
                        if (getFragmentManager().getBackStackEntryCount() > 1) {
                            getSupportActionBar().setDisplayHomeAsUpEnabled(true); // show back button
                            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    getFragmentManager().popBackStackImmediate();
                                }
                            });

                        } else {
                            getSupportActionBar().setDisplayHomeAsUpEnabled(false);
                            toggle.syncState();
                            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    drawer.openDrawer(GravityCompat.START);
                                }
                            });
                        }
                    }
                }
            });

答案 2 :(得分:0)

如果您使用的是android.support.v7.widget.Toolbar,请将此代码添加到AppCompatActivity中:

@Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return true;
    }

答案 3 :(得分:0)

在清单

中的onClick写入onBackPressed();
    <activity android:name=".XYZActivity"
              android:parentActivityName=".MainActivity" />

答案 4 :(得分:0)

  1. MainActivity onCreate()方法中的设置工具栏。

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_home);
    toolbar.setTitle("Activity Name");
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    
  2. 通过在MainActivity Level中实现以下方法来设置返回导航。

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

  3. 效果很好..

  4. @Rajesh