【问题标题】:Transitions and fragments过渡和片段
【发布时间】:2017-07-15 05:55:28
【问题描述】:

对于我的应用程序 UI,我使用 Transitions 和 Fragments。在我的第一个FragmentonCreateView 函数中,我启动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


【解决方案1】:

当您从片段一切换到片段二时,请使用以下代码它对我有用,希望对您有所帮助。

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

当你想在 backpress 上再次回到这个片段时使用 addToBackStack,否则你不需要添加 addTobackstack

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多