@newdancer

Проблема при динамической работе с фрагментами?

Проблема при динамической работе с фрагментами?
класс main:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
        setSupportActionBar(toolbar);
        actionBar = getSupportActionBar();

        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(false);

        // вызываем первый фрагмент regist
        fragment = RegistFragment.newInstance();
        actionBar.setTitle(getResources().getString(R.string.regist_info));
        selectItem(fragment);

        getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
            public void onBackStackChanged() {
                int backCount = getSupportFragmentManager().getBackStackEntryCount();
                if (backCount > 1){
                    actionBar.setDisplayHomeAsUpEnabled(true);
                } else {
                    actionBar.setDisplayHomeAsUpEnabled(false);
                }
            }
        });
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public void onBackPressed() {
        if (getFragmentManager().getBackStackEntryCount() > 0) {
            getFragmentManager().popBackStack();
        } else {
            finish();
        }
    }

    public void changeFrag(Fragment fragment, String titleFrag) {
        actionBar.setTitle(titleFrag);
        selectItem(fragment);
    }

    private void selectItem(Fragment fragment) {
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.setCustomAnimations(R.anim.fragment_slide_left_enter, R.anim.fragment_slide_left_exit,
                R.anim.fragment_slide_right_enter, R.anim.fragment_slide_right_exit);
        fragmentTransaction.addToBackStack(fragment.getClass().getName());
        fragmentTransaction.replace(R.id.content_frame, fragment).commit();
    }

При заходе во второй фрагмент при нажатии back приложение закрывается полностью, хотя должно уходить на первый фрагмент.
И второй вопрос как динамически менять actionBar.setTitle? Вопрос актуален, когда нажимаем кнопку back!
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ответы на вопрос 1
@davidnum95
Попробуй add вместо replace:
fragmentTransaction.add(R.id.content_frame, fragment).commit();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы