JessYanCoding / JessYanCoding/AndroidAutoSize

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

未关闭
#308 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Java
星标
13.7k
派生
2k
PR 合并指标
30 天内没有已合并 PR

描述

### 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:

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。