Android Fragments 配置更改后Android UI翻倍

iswrvxsc  于 2023-05-18  发布在  Android
关注(0)|答案(1)|浏览(131)

我有一个问题,片段的UI在配置更改后加倍,这样从亮模式到暗模式,然后在片段的滚动视图上向下滚动会产生下面的图像。UI将悬停在对方产生令人眼花缭乱的效果

布局如下:

<ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

           <RelativeLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            .
            .
            .
           </RelativeLayout>
           <include
             android:id="@+id/distance_filter"
             layout="@layout/fragment_some_layout" />
        </LinearLayout>
 </ScrollView>

片段的宿主活动在其onCreate()中定义了此方法

DistanceFragment mFragment = new DistanceFragment();
mFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction().add(binding.rootContainer.getId(), mFragment).commit();

有趣的是,使用replace而不是add消除了bug,但替换了UI

eyh26e7m

eyh26e7m1#

好的,我已经解决了这个问题,但不确定根本原因。首先,最好从这里开始:Android: fragments overlapping issue
在我的案例中,解决方案只是为savedInstanceState设置一个null检查,以防止添加另一个片段。为什么活动重叠的片段,仍然是一个谜。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
DistanceFragment mFragment = new DistanceFragment();
mFragment.setArguments(getIntent().getExtras());

if (savedInstanceState == null){        
getSupportFragmentManager().beginTransaction().add(binding.rootContainer.getId(), mFragment).commit();
      }
}

相关问题