JessYanCoding / JessYanCoding/AndroidAutoSize

Activity#onCreate方法中添加HomeFragment,使用FragmentTransaction#commitNow()、FragmentTransaction#commitNowAllowingStateLoss()或者FragmentTransaction#commit() + fragmentManager.executePendingTransactions()这些方式添加Fragment时,第一个Fragment适配失败。

Abierto
#308 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
13.7k
Forks
2k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

### Environment
- [x] Autosize Version: 1.2.1
- [x] Target Android Version: Android 9.0, api28
- [x] Device Model: huawei mate 10 pro
- [x] Device Resolution: 1080px * 2160px
- [x] Design Size On AndroidManifest: 375dp * 667dp

### Bug Description:

需求:Activity中存在多个,第一个Fragment想实现按照高度适配。

在Activity#onCreate方法中添加HomeFragment,使用commit方法添加Fragment时,适配没有问题;

但是使用`FragmentTransaction#commitNow()`、`FragmentTransaction#commitNowAllowingStateLoss()`或者`FragmentTransaction#commit() + fragmentManager.executePendingTransactions()`这些方式添加Fragment时,添加的第一个Fragment就不会按照高度适配,会跟随父Activity的适配走。

### Log:

```log

E/autosize: MainActivity#onCreate DisplayMetrics:
density: 3.12
densityDpi: 499
scaledDensity: 3.12
E/autosize: HomePageFragment#onCreate DisplayMetrics:
density: 3.12
densityDpi: 499
scaledDensity: 3.12
E/autosize: HomePageFragment#getSizeInDp
E/autosize: HomePageFragment#isBaseOnWidth
E/autosize: HomePageFragment#onCreateView DisplayMetrics:
density: 3.12
densityDpi: 499
scaledDensity: 3.12
E/autosize: HomePageFragment#onViewCreated DisplayMetrics:
density: 3.12
densityDpi: 499
scaledDensity: 3.12

```

### Related Code:
```java

HomePageFragment实现了 CustomAdapt接口,isBaseOnWidth返回false。
public class HomePageFragment extends Fragment implements CustomAdapt {
@Override
public boolean isBaseOnWidth() {
Log.e("autosize","HomePageFragment#isBaseOnWidth");
return false;
}

@Override
public float getSizeInDp() {
Log.e("autosize","HomePageFragment#getSizeInDp");
return 1334 / 2.0f;
}
}

MainActivity#onCreate中添加Fragment的方法:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
// 1
transaction.add(R.id.fl_container, frag, fragmentTags[currentTabIndex]).show(frag).commitNow();
// 2
// transaction.add(R.id.fl_container, frag, fragmentTags[currentTabIndex]).show(frag).commitNowAllowingStateLoss();
// 3
// transaction.add(R.id.fl_container, frag).show(frag).commit();
// fragmentManager.executePendingTransactions();

```

### Others:

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.