片段事务(替换)冻结UI

时间:2017-01-02 11:43:32

标签: android user-interface replace transactions fragment

我有一个片段,在它的布局中我有一个两个视图的区域。一个用于列表视图。另一个是地图视图。

列表视图只是一个列表视图。 地图视图是一个单击按钮后我提交的片段。 因此,当我按下第一次的按钮时,它需要大约2-3秒来替换专用视图中的片段。在这个时候,所有的UI都被卡住了。 之后,列表到地图之间的转换反之亦然。

怎么能克服这个?

布局布局:

<RelativeLayout  

        ....

        <RelativeLayout
            android:id="@+id/mapViewLayout"
            android:layout_below="@id/restaurantListFragTxtNoResults"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="visible">

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/listViewLayout"
            android:layout_below="@id/restaurantListFragTxtNoResults"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ListView
                android:id="@+id/listView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:divider="@color/app_theme_color"
                android:dividerHeight="4px">
            </ListView>

             ...

        </RelativeLayout>   

     ...

</RelativeLayout>   
按钮上的

单击以切换到地图视图:

  mFragmentManager.beginTransaction()
                            .replace( R.id.mapViewLayout,
                                    new MapFragment() ).commit();
layoutView.findViewById(R.id.restViewLayout).setVisibility(View.GONE);

1 个答案:

答案 0 :(得分:0)

尝试使用处理程序包装片段事务。

new Handler().postDelayed(new Runnable() {
           @Override
           public void run() {
             mFragmentManager.beginTransaction()
                         .replace(R.id.mapViewLayout,
                                 new MapFragment()).commit();
           }
       }, 50);