【发布时间】:2017-07-15 05:55:28
【问题描述】:
对于我的应用程序 UI,我使用 Transitions 和 Fragments。在我的第一个Fragment 的onCreateView 函数中,我启动Transition 以将显示从第一个Scene 更改为第二个Scene。之后,当我单击Button 时,我开始另一个Transition 以显示由第三个Scene 表示的某种“闪屏”,并且在它的onTransactionEnd 中,我尝试将Fragment 更改为@ 987654333@.
在调试模式下,我看到我的Runnable 已正确启动,但新的Fragment 并没有取代第一个...不过,确实发生了一些事情:我必须在返回按钮上单击两次才能返回我的第一个Fragment。事实上,Fragment 似乎已激活但不可见...
知道如何解决这个问题吗?
正如第一条评论中所问的,这是我用来更改Fragment 的代码:
fragment=new mySecondFragment();
transaction=getActivity().getFragmentManager().beginTransaction();
transaction.replace(R.id.Conteneur, fragment,"Fragment tag");
transaction.addToBackStack(null);
transaction.commit();
我可以补充一点,从onTransitionEnd 外部启动的这段代码运行良好。
“容器”的 xml 文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/Conteneur" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> </LinearLayout>
第一个和第二个场景的 xml 文件(唯一的区别;按钮在第一个的代码中设置为不可见):
<TextView android:id="@+id/TitreJeux" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginBottom="@dimen/MargeVerticaleBoutonsInterfaceJeux" android:lines="1" android:text="@string/app_name" android:textColor="#FFFF00" android:textSize="35sp" android:textStyle="bold" android:typeface="serif"/> <vd63.jeux.JeuAnimationRapide.BoutonInterface android:id="@+id/BoutonOptions" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_gravity="center" android:layout_marginTop="@dimen/MargeVerticaleBoutonsInterfaceJeux" android:layout_weight="1" android:background="@drawable/bouton_jouer" android:text="@string/BoutonOptions" android:textColor="@color/CouleurTexteBoutons" android:textSize="25sp" android:typeface="serif"/>
“飞溅”场景的 xml 文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/EcranChargement" android:orientation="vertical" android:gravity="center" android:background="@drawable/fond_interface" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".JeuAnimationRapide"> <ImageView android:id="@+id/VD63" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/vd63"/> <ImageView android:id="@+id/Chargement" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/chargement"/>
我从场景一(按钮不可见,简单的Slide)切换到场景二,然后回到场景一(再次Slide),然后切换到“飞溅”场景(使用Fade 切换)。
【问题讨论】:
-
能否分享一下 FragmentTransaction 代码?
-
好的,问题解决了!我搞砸了不同的视图和容器......
标签: java android android-fragments transition