Articles of fragmenttransaction

FragmentTransacation具有> 4性能的幻灯片进/出animation

我正在尝试使用幻灯片输入/输出animation实现片段事务。 我正在开发至少14 sdk所以ObjectAnimator对我来说是唯一的选择( 还有其他方法吗?根据我的理解,翻译animation不可用)。 守则很简单: AnimationView.java – 包装类 public class AnimationView extends LinearLayout { public AnimationView(Context context, AttributeSet attrs) { super(context, attrs); } public float getYFraction() { return getHeight(); } public void setYFraction(float yFraction) { final int height = this.getHeight(); setY((height > 0) ? (yFraction * height) : -9999); } } 滑入和滑出xml animation效果很好 ,你可以看到我使用自定义属性yFraction。 但性能非常糟糕……在某些平板电脑中,我注意到animation期间有一条水平的白线(大约3像素高),在其他智能手机设备中,它只是变慢(不是持续时间慢而是闪烁)。 […]

如何在animation时显示退出片段上方的输入片段。

我想要实现的效果是将输入(新)片段覆盖在退出(旧)片段之上,但是当我用新片段替换旧片段时,旧片段就会消失,新片段向上滑动容器,这是可见的(容器)。 我不想为旧片段设置animation,只是保留旧片段,当它可见时,将新片段向上滑动。 以下是我的代码: // First time adding fragment ie “oldFragemnt” FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content_frame, oldFragment, “oldFragemnt”); ft.addToBackStack(null); ft.commit(); // while adding “newFragemnt” FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.new_slide_in_up,0,0,R.anim.new_slide_out_down); ft.replace(R.id.content_frame, newFragment, “newFragemnt”); ft.addToBackStack(null); ft.commit(); 指导我出错的地方。 当新片段向上滑动时,我的旧片段正在消失。

Android – 在同一XML文件上制作翻译和objectAnimator

我一直试图在从一个片段滑动到另一个片段的同时制作3D立方体旋转效果。 首先我使用了一个使用FragmentTransaction.setCustomAnimations(…) )调用的翻译效果(然后),当打开/关闭片段时,我正在使用Camera classe来进行旋转。 这工作很精细,但似乎我有太多(不要问我为什么)只使用XML文件使用所有这个animation。 经过长时间的搜索,我发现我应该使用objectAnimator进行旋转。 跟着谷歌样本,我设法制作翻转animation。 现在我需要翻译碎片,使它们滑入并滑出。 似乎我不能使用objectAnimator并在同一XML文件上转换效果。 由于出现此错误: java.lang.RuntimeException: Unknown animator name: translate at (…) 关于如何制作滑动效果并同时使用objectAnimator的任何想法? 感谢您的时间! 代码我一直在使用: card_flip_right_in.xml 片段调用另一个片段:(在此2之间应该可以看到立方体旋转) private void launchArticle(int prev, int pos){ ArticleFragment newFragment = new ArticleFragment(); Bundle args = new Bundle(); args.putString(“pos”, pos); args.putInt(“prev”, prev); newFragment.setArguments(args); android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction(); Fragment currFrag = (Fragment)getFragmentManager().findFragmentById(R.id.headlines_fragment); if (currFrag != null) […]

如何在按钮上添加/删除片段?

目前我有一个“RELATIVE_LAYOUT”容器,我用它来添加我的片段。 我在按钮上使用OnClickListener将片段XML布局加载到RelativeLayout容器中。 我想要实现的是,当我按下按钮一次时,片段应该加载…当我再次按下它时,应该删除片段。 我已经尝试使用整数来识别是否加载了片段,但是失败了。 任何帮助赞赏…… 码: public class MainActivity extends Activity { Button B1,B2; int boolb1=0, boolb2=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); B1 = (Button)findViewById(R.id.btn1); B2 = (Button)findViewById(R.id.btn2); B1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); FragmentOne f1 = new FragmentOne(); if(boolb1==0) {ft.add(R.id.frg1, […]

使用addToBackStack进行Fragment事务后单击后退按钮不会执行任何操作

我希望能够通过使用addToBackStack()来反转replace FragmentTransaction : FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction(); Fragment scheduleFragment = new ScheduleFragment(); fragmentTransaction.replace(R.id.content_container, scheduleFragment, “scheduleFragment”); fragmentTransaction.addToBackStack(“scheduleFragment”); fragmentTransaction.commit(); 但之后,单击后退按钮不会执行任何操作。 从文档和它应该扭转交易。 我错过了什么?

如何在Android上实现平滑的片段交易animation

我主要使用iOS,已经习惯了非常流畅和流畅的屏幕更改animation。 我现在正在开发一个Android应用程序并且不能在我的生活中获得一个片段事务来平滑地添加/替换片段。 我的设置如下: MainActivity的xml有一个FrameLayout ,我立即将FragmentA加载到MainActivity的OnCreate 。 然后我的应用程序继续使用FragmentB , FragmentC替换MainActivity的FrameLayout 。 所以我的整个应用程序有1个活动。 在按钮单击时,我调用以下内容来添加/替换当前片段: getFragmentManager() .beginTransaction() .setCustomAnimations(R.animator.slide_in, android.R.animator.fade_out, android.R.animator.fade_in, R.animator.slide_out) .addToBackStack(null) .add(R.id.fragment_1, fragment) .commit(); slide_in.xml看起来像(slide_out.xml显然是相反的): 滑入和滑出我animationxFraction,我已经将LinearLayout子类化为这样做: public class SlidingLinearLayout extends LinearLayout { private float yFraction = 0; private float xFraction = 0; public SlidingLinearLayout(Context context) { super(context); } public SlidingLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); } […]

来自ApiDemos样本的FragmentLayout类中的Strange FragmentTransaction

对不起,这个问题适合那些使用Eclipse访问ApiDemo示例代码的人 。 具体来说,我试图将片段活动基于名为FragmentLayout的样本 以下代码对我来说有问题( 您可以在ApiDemo FragmentLayout.java , ShowDetails()方法中find完整代码 ): // Execute a transaction, replacing any existing fragment // with this one inside the frame. FragmentTransaction ft = getFragmentManager().beginTransaction(); if (index == 0) { ft.replace(R.id.details, details); } else { ft.replace(R.id.a_item, details); } ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit(); 我有两个问题: index == 0和index != 0之间有什么区别? 资源R.id_a_item(在搜索之后仅在所有ApiDemos中出现)属于某种菜单快捷方式资源,根本不清楚为什么在这里使用它。 android.developers指南没有解释这段代码。

用同一类的另一个片段替换片段

我有一个fragment (让我们称之为MyFragment )根据参数中传递的参数膨胀不同的布局。 如果MyFragment是从不同的片段启动的,那么一切都很好。 但是如果MyFragment处于活动状态并且我想使用不同的布局参数启动新的MyFragment ,则fragmentManager根本不会创建新的片段。 data.setInt(“Layout index”,i); fragmentTab0 = (Fragment) new MyFragment(); fragmentTab0.setArguments(data); fragmentTransaction.replace(R.id.fragmentContent, fragmentTab0, “MY”); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); 我如何强制说服fragmentTransaction再次启动片段? 注意 :这里重点是我需要再次充气布局,这与之前充气的布局不同。 代码如下: public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { switch( getArguments().getInt(“Layout index”) ) { case 1: rootView = inflater.inflate(R.layout.firstlayout, container, false); break; case 2: rootView = inflater.inflate(R.layout.secondlayout, container, false); break; case 3: […]

NullPointerException:FragmentManager.beginTransaction()

尝试从第一个片段启动片段时出现此错误: java.lang.NullPointerException: Attempt to invoke virtual method ‘android.app.FragmentTransaction android.app.FragmentManager.beginTransaction()’ on a null object reference 这是我收到错误的方法: @Override public void onClick(View v) { Fragment fragment = new PropertyFragment(); if (fragment != null) { FragmentManager fragmentManager = fragment.getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // Replace whatever is in the fragment_container view with this fragment, // and add the transaction […]

AppCompat Action Bar库未显示添加的片段

编辑 :如果我扩展FragmentActivity而不是ActionBarActivity我的布局再次显示(当然没有ActionBar )。 ActionBar在4.x设备上按预期工作,但在我的2.3设备上,我得到的只是ActionBar ,下面是一个空白屏幕 。 Fragment似乎没有被添加到Activity 。 的themes.xml @style/Widget.ActionBar 主题-v11.xml @style/Widget.ActionBar styles.xml @color/actionbar_background @color/actionbar_background 活动onCreate() FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); myFragment = new WallFragment(); fragmentTransaction.add(android.R.id.content, myFragment, myFragment.FRAGMENT_TAG); fragmentTransaction.commit(); 我正在使用Gradle在我的应用程序中包含AppCompat ActionBar库。 compile ‘com.android.support:appcompat-v7:18.0.+’