繁体   English   中英

将工具栏主导航按钮设置为跟随Backstack,Android

[英]Set Toolbar Home Navigation Button to Follow backstack, 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后退按钮在后退之后向后导航。 在此处输入图片说明

在活动中添加此方法:

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

我长期以来一直在关注此问题,但尚未发现任何问题。

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

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

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

在您的onClick中写onBackPressed(); 清单中

    <activity android:name=".XYZActivity"
              android:parentActivityName=".MainActivity" />
  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. 效果很好..

@Rajesh

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM