JessYanCoding / JessYanCoding/AndroidAutoSize

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

Đang mở
#308 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
13.7k
Fork
2k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.