Как получить кнопку «Назад» на панели действий с новой навигацией Jetpack - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу иметь кнопку в панели действий по умолчанию на новом AndroidX Jetpack навигационное приложение.

Я следую указаниям по началу работы с google navigation, чтобы создать приложение для навигации, но мне не хватает кнопки Backbate на панели действий, поэтому я добавляю OnCreate MainActivity:

        ActionBar actionbar = getSupportActionBar();
        NavController nc = Navigation.findNavController(mainFragment.getView());
        AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(nc.getGraph()).build();
        androidx.navigation.ui.NavigationUI.setupActionBarWithNavController(this,nc, appBarConfiguration); 

Теперь я вижу кнопку «Backbutton» в панели действий, если я не в главном главном фрагменте, но нет функции возврата, если я нажимаю эту кнопку. Обычная обратная клавиша работает нормально, но как мне заставить работать кнопку actionbar.

enter image description here

Обновление: Не работает от второго фрагмента к первому (основному / корневому) фрагменту. с третьего на второй фрагмент это работает. нав-график

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

попробуйте это: -

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //do your stuff here
            }
        });

второй вариант -;

@Override
    public boolean onSupportNavigateUp() {
        return super.onSupportNavigateUp();
        // do your stuff here
    }
0 голосов
/ 17 апреля 2019
package com.pg.navigation;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NavUtils;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;

import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity implements main_fragment.OnFragmentInteractionListener, Fragment2.OnFragmentInteractionListener, fragment3.OnFragmentInteractionListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Fragment mainFragment = getSupportFragmentManager().findFragmentById(R.id.fragment);
        ActionBar actionbar = getSupportActionBar();
        NavController nc = Navigation.findNavController(mainFragment.getView());
        AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(nc.getGraph()).build();
        androidx.navigation.ui.NavigationUI.setupActionBarWithNavController(this,nc, appBarConfiguration);
    }

    @Override
    public boolean onSupportNavigateUp() {
        return super.onSupportNavigateUp();
    }

    @Override
    public void onFragmentInteraction(Uri uri) {

    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        return super.onOptionsItemSelected(item);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...