2017-07-15 76 views
0

对于我的应用程序的用户界面,我使用Transition s和Fragment s。在我的第一个FragmentonCreateView函数中,我启动了一个Transition将显示从第一个Scene更改为第二个Scene。之后,当我点击一个Button时,我开始另一个Transition显示某种由第三个Scene代表的“splashscreen”,并且在onTransactionEnd中,我尝试将Fragment更改为myView.postDelayed(new myRunnableForChangingFragment(),1000)转换和片段

在调试模式下,我看到我的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 FLE的 “飞溅” 场景:

<?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)到场景2然后返回到场景1(Slide再次)然后到“飞溅”场景(具有Fade转换)。

+0

?请分享FragmentTransaction代码? –

+0

好的,问题解决了!我搞乱了不同的观点和容器...... – Zelig63

回答

1

当你从片段1切换到片段2使用下面的代码它适用于我我希望它会帮助你。

Fragment fragment = SearchActivity.newInstance(context); 
String tag = fragment.toString(); 
getFragmentManager().beginTransaction() 
.addToBackStack(tag)  
.replace(R.id.fragment, new SearchActivity()) 
.commit(); 

使用addToBackStack当你想回来这个片段再次backpress否则你不需要添加addTobackstack