Заголовок фрагмента остается на заголовке предыдущего фрагмента, когда я нажимаю кнопку "Назад"

Следуя этому и этому сообщениям MO, я попытался установить заголовок панели приложения моего проекта Android следующим образом:

Основная деятельность

      @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        setSupportActionBar(findViewById(R.id.toolbar));

        navController = Navigation.findNavController(this, R.id.navHostFragment);
        navController.addOnDestinationChangedListener((controller, destination, args) -> {
            // Check if it's a root destination
            NavGraph destinationGraph = destination.getParent();
            boolean isRootDestination = destinationGraph != null &&
                    destinationGraph.getStartDestinationId() == destination.getId();
            // Update back button accordingly
            Objects.requireNonNull(getSupportActionBar())
                    .setDisplayHomeAsUpEnabled(!isRootDestination);

            // Update activity title
            setTitle(destination.getLabel());
        });
    }

фрагменты_Graph.xml

      <fragment
    android:id="@+id/fragmentA"
     ...
    android:label="Fragment A"
    ... >
    <action
        android:id="@+id/action_fragmentA_to_fragmentB"
        app:destination="@id/fragmentB"
        app:launchSingleTop="true" />
</fragment>
<fragment
    android:id="@+id/fragmentB"
    ...>
    <action
        android:id="@+id/action_fragmentB_to_fragmentA"
        app:destination="@id/fragmentA"
        app:launchSingleTop="true" />
</fragment>

и внутриonCreateизFragment Bя использовал:

      requireActivity().setTitle("some title");

в прямом направлении все работает нормально, но когда я нажимаю стрелку назад во фрагменте B, заголовок фрагмента A становится «каким-то заголовком» !! В чем проблема??

Когда я добавляю еще один фрагмент с предопределенным заголовком (вgraph.xml, т.е. android:label="Fragment New") перед фрагментом A, навигация вверх и назад между фрагментами A и New работает нормально, а заголовок AppBar показывает то, что указано.

Обновлять:

Я пытался использовать следующее, но проблема остается прежней (т.е. Фрагмент A -> Новая метка! (фрагмент B) и в обратном направлении: Новая метка! -> Новая метка! (фрагмент A)):

      if(destination.getLabel()==null){
   destination.setLabel("New Label!");
   setTitle(destination.getLabel());
} else {
   setTitle(destination.getLabel());
}

0 ответов

Другие вопросы по тегам