Почему множественные SupportMapFragment перекрываются в разных фрагментах в Android? - PullRequest
0 голосов
/ 10 ноября 2018

Я новичок в разработке Android Google Map, я использую два SupportMapFragment в разных Fragment-1 и Fragment-2 соответственно.

Сначала я добавляю два фрагмента к BackStack. Прежде чем показывать какой-либо фрагмент, сначала я скрою весь фрагмент.

Я хочу, чтобы эти два фрагмента были живы одновременно, поэтому я не использовал замену или удаление любого фрагмента. Forex-образец, когда fragment2 скрывается, но все равно что-то делает на заднем плане.

Сначала я открываю Fragment-1 и поворачиваюсь к Fragment-2, а затем снова к Fragment-1. Fragment-1 показывает перекрытие, как показано на следующем рисунке.

enter image description here

Я пытаюсь скрыть один из Fragment-2, но он не работает.

IN MainActivity, я управляю своим фрагментом.

В onCreate() я вызову следующую функцию:

public void initStartFragment(){

        fragment1= new Fragment1();
        getSupportFragmentManager().beginTransaction()
                .add(R.id.fragment_layout, fragment1)
                .addToBackStack(Fragment1.getClass().getName()).commit();

        fragment2= new Fragment2();
        getSupportFragmentManager().beginTransaction()
                .add(R.id.fragment_layout, fragment2)
                .addToBackStack(Fragment2.getClass().getName()).commit();
}


@Override
public void onClick(View v) {

    FragmentTransaction mFragmentTransaction = mManager.beginTransaction();
    hideFragment(mFragmentTransaction);

    if(v.getId() == R.id.dive_learning_btn){

        if (fragment1 == null) {
            fragment1= new Fragment1();
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_layout, fragment1)
                    .commit();
        }
        mFragmentTransaction.show(fragment1)
                .commit();

    }else if(v.getId() == R.id.expect_setting_btn){

        if (fragment2== null) {
            fragment2= new Fragment2();
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_layout, fragment2)
                    .commit();
        }
        mFragmentTransaction.show(fragment2)
                .commit();

    }
}

Прежде чем показывать фрагмент, сначала я скрою весь фрагмент:

public void hideFragment(FragmentTransaction ft) {
        //if fragment noy null , hide it.
        if (fragment1 != null) {
            ft.hide(fragment1 );
        }
        if (fragment2 != null) {
            ft.hide(fragment12);
        }
    }

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

Почему это состояние произошло? Я что-то пропустил?

Может кто-нибудь мне помочь?

Заранее спасибо.

...