Управляйте значком панели инструментов с помощью NavigationDrawer

В настоящее время я использую в своем приложенииandroid.support.v7.widget.Toolbar а такжеandroid.support.v4.widget.DrawerLayout, Все работает правильно, но есть небольшая вещь, которую я хочу изменить в своем поведении.

Когда я открываю ящик, весь ящик занимаетspace of the Toolbar, Было бы неплохо, чтобы панель инструментов оставалась сверху, как вGoogle Music app, Как я могу этого достичь?

Но самое главное не предыдущее.At first, the icon which is loaded in the application is the three stripped one, Я понял, что после открытия ящика значок меняется на стрелку. И после загрузки фрагмента стрелка остается там как значок панели инструментов, даже если я нажимаю назад до первого экрана. Как можно избежать появления стрелки после открытия ящика? Я хотел бы изменить этот значок вручную, особенно когда я загружаю фрагменты более низкого уровня.

Спасибо за вашу помощь!

Код:

public class HomeActivity extends BaseActivity {



...

    private DrawerLayout mDrawer;
    private ActionBarDrawerToggle mDrawerToggle;
    private ListView mDrawerList;
    private ListView mDrawerRightList;
    private RelativeLayout mDrawerRelativeLayout;
    private String[] mDrawerMenuTitles;
    private Toolbar mToolbar;

    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        mDrawerMenuTitles = getResources().getStringArray(R.array.main_menu_options);

        mDrawer = (DrawerLayout) findViewById(R.id.drawer);

        mDrawerRelativeLayout = (RelativeLayout) findViewById(R.id.theDrawerRelativeLayout);

        mDrawer.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

        mDrawerRightList = (ListView) findViewById(R.id.theDrawerRight);
        mDrawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mDrawerRightList);

        mDrawerList = (ListView) findViewById(R.id.theDrawer);

        mDrawerList.setAdapter(new ArrayAdapter<String>(
                getSupportActionBar().getThemedContext(), 
                R.layout.drawer_list_item,
                mDrawerMenuTitles
        ));

        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        setmToolbar((Toolbar) findViewById(R.id.toolbar));

        mDrawerToggle = new ActionBarDrawerToggle(
                this, 
                mDrawer,
                mToolbar,
                R.string.drawer_open, 
                R.string.drawer_close){

            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                // TODO Auto-generated method stub
                super.onDrawerSlide(drawerView, slideOffset);
            }

            @Override
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                //getSupportActionBar().setTitle(CURRENT_FRAGMENT);
            }

            /** Called when a drawer has settled in a completely open state. */
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                //getSupportActionBar().setTitle("Configuración");
            }           

        };

        mDrawerToggle.setDrawerIndicatorEnabled(true);
        mDrawerToggle.syncState();
        mDrawer.setDrawerListener(mDrawerToggle);

        setToolbarSubtitle(getString(R.string.misrutas_titulo));

        initialisePreferences(savedInstanceState);

        if (savedInstanceState == null) {
            replaceFragment(DEFAULT_FRAGMENT);
        }

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                mDrawer.openDrawer(GravityCompat.START);
                return true;
        }

        return super.onOptionsItemSelected(item);
    }

     private class DrawerItemClickListener implements OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //selectItem(position);
            final int thePos = position;
            mDrawer.setDrawerListener( new DrawerLayout.SimpleDrawerListener(){
                @Override
                public void onDrawerClosed(View drawerView){
                ....
                }
            });

            if(mDrawer.isDrawerOpen(GravityCompat.START))
                mDrawer.closeDrawer(mDrawerRelativeLayout);

        }
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

     @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggls
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public void onBackPressed(){
        setToolbarSubtitle(getString(R.string.app_name_subtitle));
      if (getSupportFragmentManager().getBackStackEntryCount() == 1){
        finish();
      }
      else {
        super.onBackPressed();
      }
    }

    private void replaceFragment (String to){

        if(!to.equalsIgnoreCase(CURRENT_FRAGMENT)){
            CURRENT_FRAGMENT = to;
            Fragment fragment = Fragment.instantiate(HomeActivity.this, to);
            String backStateName =  fragment.getClass().getName();
            String fragmentTag = backStateName;

            FragmentManager manager = getSupportFragmentManager();
            boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0);

            if (!fragmentPopped && manager.findFragmentByTag(fragmentTag) == null){ //fragment not in back stack, create it.
                FragmentTransaction ft = manager.beginTransaction();
                ft.replace(R.id.content_frame, fragment, fragmentTag);
                ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                ft.addToBackStack(backStateName);
                ft.commit();
            } 

        }

    }

    //More methods
    ....

}

РЕДАКТИРОВАТЬ:

Мне удалось немного изменить свой макет, чтобы панель инструментов оставалась поверх остального экрана (ящик и фрагмент). Но я не смог контролировать значок. Когда я открываю ящик, значок гамбургера превращается в стрелку. Когда я закрываю ящик, стрела превращается в гамбургер. Но когда я нажимаю опцию внутри ящика, новый фрагмент надувается, и значок гамбургера заменяется стрелкой, пока приложение не будет закрыто, так что значок гамбургера никогда не будет виден.

Как я могу адаптировать поведение значка, чтобы оно не менялось с гамбургера на стрелку, когда я щелкаю по опции ящика?

Ответы на вопрос(2)

Ваш ответ на вопрос