Articles of fragmenttransaction

Android:何时使用FragmentTransaction.remove是否合适?

我以为我已经明白你应该在onCreate()和onDestroy()中的FragmentTransaction.remove()中调用FragmentTransaction.add()。 我的应用程序在onDestroy()崩溃时出现此错误: 06-26 15:25:50.213: E/AndroidRuntime(579): java.lang.RuntimeException: Unable to destroy activity {com.myapp/com.myapp.MainActivity}: java.lang.IllegalStateException: Activity has been destroyed 如果不在onCreate / onDestroy()中,我什么时候调用这些东西?

什么时候提交FragmentTransaction是安全的?

根据文件 片段事务只能在活动保存其状态之前创建/提交。 如果您尝试在Activity.onSaveInstanceState()之后(以及之后的Activity.onStart或Activity.onResume()之前提交事务,则会收到错误。 我可以理解片段事务在Activity.onSaveInstanceState()之后无法提交的第一部分,因为如果需要恢复活动,则提交后的状态可能会丢失。 但我不明白为什么我们不能在Activity.onStart或Activity.onResume()之前提交片段事务? Oncreate()也在Activity.onStart或Activity.onResume()之前。这是否意味着我们甚至无法在oncreate()中提交它?

如何使用片段替换ViewPager

我有以下布局 Everyting is workinf fine,但我想用Fragment替换ViewPager getSupportFragmentManager().beginTransaction() .replace(R.id.view_pager, new CustomFragment()) .commit(); 这不是诋毁ViewPager我该怎么办?

如何将片段添加到DialogFragment的布局?

我有一个自定义DialogFragment ,其中包含布局,一些UI元素和Fragment holder布局。 我需要做的是将内容片段膨胀到持有者布局中并在其中提供导航。 单击添加的片段内的按钮后,视图将导航到另一个视图。 该片段将被同一个持有者中的另一个片段替换,即contentFragment1将显示一些数据,并且在单击预览按钮时,将使用contentFragment1替换contentFragment2 。 我读到某个地方你不能用另一个替换硬编码到xml的片段。 所以我试图从对话框片段的onActivityCreated()添加contentFragment1到viewholder 。 但是我收到一个错误,即找不到R.id.fragmentHolder指向的资源。 可能的原因是什么? 这是我的DialogFragment代码: public class MyDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog customDialog = new Dialog(getActivity()); customDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); customDialog.setContentView(R.layout.reports_dialog); return customDialog; } @Override public void onActivityCreated(Bundle savedInstanceState) { android.app.FragmentTransaction fragmentTransaction =getFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.myFragmentHolder, new ReportsListFragment()); fragmentTransaction.commit(); super.onActivityCreated(savedInstanceState); }

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); } […]