Название приложения не меняется после возврата к предыдущему фрагменту - PullRequest
0 голосов
/ 16 апреля 2020

Я разрабатывал приложение android, в которое я включил Навигационный ящик по умолчанию из Android Studio и так далее. В своем домашнем фрагменте я реализовал CarViews, а затем установил эти Cardview (s) OnClickListener для замены фрагмента традиционной процедурой. После замены фрагмента и появления новой страницы я хотел изменить заголовок панели действий. Итак, в методе onCreateView(...), который я пробовал,

((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("B");

Это сработало. Но после нажатия аппаратной кнопки «Назад» на go для возврата к сложенному фрагменту заголовок остается измененным и снова не меняется на "Home". Я пробовал другие способы. Вот мои следующие коды. Заранее спасибо.

public class HomeFragment extends Fragment implements View.OnClickListener {
    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_home, container, false);
        Objects.requireNonNull(((AppCompatActivity) Objects.requireNonNull(getActivity())).getSupportActionBar()).setTitle("Home");

        CardView cardView1 = root.findViewById(R.id.doctor_on);
        CardView cardView2 = root.findViewById(R.id.ambulance_e);
        CardView cardView3 = root.findViewById(R.id.maintainance_s);

        cardView1.setOnClickListener(this);
        cardView2.setOnClickListener(this);
        cardView3.setOnClickListener(this);

        return root;
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch (id) {
            case R.id.doctor_on:
                FragmentTransaction fragmentTransaction = Objects.requireNonNull(getActivity()).getSupportFragmentManager().beginTransaction();
                Fragment fragment1 = new doctors();
                fragmentTransaction.replace(R.id.container1, fragment1).addToBackStack(getString(R.string.menu_home)).commit();
                return;
            case R.id.ambulance_e:
                //Put Actions
                FragmentTransaction fragmentTransaction2 = Objects.requireNonNull(getActivity()).getSupportFragmentManager().beginTransaction();
                Fragment fragment2 = new ambulance();
                fragmentTransaction2.replace(R.id.container1, fragment2).addToBackStack(getString(R.string.menu_home)).commit();
                return;
            case R.id.maintainance_s:
                //Put Actions
                FragmentTransaction fragmentTransaction3 = Objects.requireNonNull(getActivity()).getSupportFragmentManager().beginTransaction();
                Fragment fragment3 = new maintanance();
                fragmentTransaction3.replace(R.id.container1, fragment3).addToBackStack(getString(R.string.menu_home)).commit();
                return;
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Home");
    }
}

До следующего фрагмента (где я меняю заголовок заголовка и нажимаю кнопку возврата):

public class doctors extend Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("B");
        View root = inflater.inflate(R.layout.fragment_doctors, container, false);

        return root;
    }

}

Ответы [ 3 ]

0 голосов
/ 17 апреля 2020

Добавьте следующий код в Home Fragment ...

@Override
    public void onHiddenChanged(Boolean hidden) {
        super.onHiddenChanged(hidden);
        ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Home");
    }
0 голосов
/ 21 апреля 2020

А в doctors Фрагмент ... Следует исправить ошибку заголовка.

@Override
public void onDestroyView() {
    super.onDestroyView();
    Objects.requireNonNull(((AppCompatActivity) Objects.requireNonNull(getActivity()))
            .getSupportActionBar())
            .setTitle(getString(R.string.your_title_here));
}
0 голосов
/ 16 апреля 2020

Вы должны переопределить метод onBackPressed () и написать код:

@Override
public View onBackPressed(){
    //Here goes the code that head back to your main fragment
    FragmentTransaction fragmentTransaction3 = Objects.requireNonNull(getActivity()).getSupportFragmentManager().beginTransaction();
            Fragment fragment3 = new maintanance();
            fragmentTransaction3.replace(R.id.container1, fragment3).addToBackStack(getString(R.string.menu_home)).commit();
}

} `

...