Проблемы с транзакцией одного фрагмента в другой - PullRequest
2 голосов
/ 02 апреля 2019

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

Таким образом, пользователь видит новый фрагмент, но когда он прокручивает вниз, он также видит старый фрагмент. Есть ли возможность полностью скрыть предыдущий фрагмент?

if(userDTO.getMobile().isEmpty()) {
            new AlertDialog.Builder(getActivity())
                    .setView(getLayoutInflater().inflate(R.layout.test2, null))
                    .setPositiveButton(R.string.okaypopup2,
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int which) {

                                    AppCompatActivity activity = (AppCompatActivity) view.getContext();
                                    ProfileSetting myFragment = new ProfileSetting();
                                    activity.getSupportFragmentManager().beginTransaction()
                                            .replace(R.id.zopa, myFragment)
                                            //.addToBackStack(null)
                                            .commit();
                                }
                            })
                    .show();
        }

Возможно, я делаю что-то не так ... Я ожидаю открытия нового фрагмента при появлении всплывающего сообщения.

Спасибо

Ответы [ 3 ]

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

Изменить это утверждение

activity.getSupportFragmentManager().beginTransaction()
                                        .replace(R.id.zopa, myFragment)
                                        //.addToBackStack(null)
                                        .commit();

К этому

activity.getSupportFragmentManager().beginTransaction()
                                        .replace(((ViewGroup)(getView().getParent())).getId(), myFragment)
                                        //.addToBackStack(null)
                                        .commit();

Я думаю, что вы передаете идентификатор фрагмента, а не идентификатор контейнера Activity в replace

0 голосов
/ 02 апреля 2019

Попробуйте,

Fragment fragment = getSupportFragmentManager().findFragmentByTag(YOUR_FRAG_TAG);
if(fragment != null)
    getSupportFragmentManager().beginTransaction().remove(fragment).commit();
0 голосов
/ 02 апреля 2019

Добавьте тег к своему старому фрагменту, получите ссылку и удалите ее в любое удобное для вас время. Что-то вроде:

Fragment fragment = getSupportFragmentManager().findFragmentByTag(YOUR_FRAG_TAG);
if(fragment != null)
    getSupportFragmentManager().beginTransaction().remove(fragment).commit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...