Навигация по панели инструментов Android с помощью кнопки "Закрыть" и "Стрелка"

Я хочу сделать навигацию по панели инструментов, как это.

Когда я создаю свою деятельность, я раздуваю фрагмент и рисую кнопку закрытия на панели инструментов. Но, если пользователь открывает другой фрагмент, показывает стрелку назад... Но на этом источнике, он показывает только кнопку закрытия.

Вот мой onCreate() метод.

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

    setSupportActionBar(mToolbar);

    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white);
    }

    getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
        @Override
        public void onBackStackChanged() {
            int stackHeight = getSupportFragmentManager().getBackStackEntryCount();
            if (stackHeight > 0) {
                if (getSupportActionBar() != null) {
                    getSupportActionBar().setHomeButtonEnabled(true);
                    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                }
            } else {
                if (getSupportActionBar() != null) {
                    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white);
                }
            }
        }
    });

    if (findViewById(R.id.container_initial) != null) {
        if (savedInstanceState != null) {
            return;
        }

        ActivityUtils.addFragmentToActivity(getSupportFragmentManager(), new LoginFragment(), R.id.container_initial);
    }
}

Если я удалю этот код, сделайте часть кнопки со стрелкой назад, но не показывайте кнопку закрытия...

        if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white);
    }

2 ответа

Попробуйте в меню, как это, но тем самым вы приблизитесь к меню

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/Updatetimetable"
    android:orderInCategory="100"
    android:title="Update"
    android:icon="@drawable/updatepopup"
    app:showAsAction="ifRoom"/>
<item
    android:id="@+id/viewalert"
    android:orderInCategory="200"
    android:title="View alert"
    android:icon="@drawable/alertcards"
    app:showAsAction="ifRoom"/>

Если панель инструментов находится в макете активности. создайте метод установки для значка в действии и вызовите его во фрагменте, чтобы изменить его.

void setIcon(){
..
}

onBackPressed(){
if(fragment visible) getsupportfragmentmanger.begintranscation().close
else super.onbackprsesed
}
Другие вопросы по тегам