Articles of fragmenttransaction

AppCompat操作栏库不显示添加的片段

编辑 :如果我扩展FragmentActivity而不是ActionBarActivity我的布局再次出现(当然没有一个ActionBar )。 ActionBar在4.x设备上按预期工作,但在我的2.3设备上,我所得到的是ActionBar和它下面的空白屏幕 。 Fragment似乎没有被添加到Activity 。 的themes.xml <style name="AppTheme" parent="AppBaseTheme"> <item name="actionBarStyle">@style/Widget.ActionBar</item> </style> 主题-v11.xml <style name="AppTheme" parent="AppBaseTheme"> <item name="android:actionBarStyle">@style/Widget.ActionBar</item> </style> styles.xml <style name="Widget.ActionBar" parent="@style/Widget.AppCompat.ActionBar"> <item name="android:background">@color/actionbar_background</item> <item name="background">@color/actionbar_background</item> </style> Activity 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.+'

FragmentManager.getFragmens()。size()不会减lessFragmentTransaction.remove(Fragment)

经过一段时间寻找我的NPE的原因,我注意到,尽pipeFragmentTransaction.remove(片段)真的删除片段,由FragmentManager.getFragments()返回的列表的大小仍然相同。 该屏幕截图显示了删除片段后此方法返回的内容: http://img.androidcookie.com/android/erro fm.PNG 该列表有3个片段,为什么大小仍然是4?

Android的片段与animation交易导致白色闪光

我有两个片段。 片段A最初是在视野中。 当用户按下button时,使用下面的方法将片段Banimation化为视图。 当我popup片段B时,它将animation从视图中移出,但是当它完成时,屏幕将闪烁白色。 不知道是什么原因造成的,似乎只发生在kit-kat而不是棒棒糖上。 正在使用的animation是向上滑动和下滑在xml中定义的animation。 @Override public void loadFragment(BaseFragment fragment, boolean replace, boolean addToBackStack, int animIn, int animOut, int animPopIn, int animPopout) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); if (animIn != -1 && animOut != -1 && animPopIn != -1 && animPopout != -1) { transaction = transaction.setCustomAnimations(animIn, animOut, animPopIn, animOut); } else if (animIn […]

当通过导航抽屉replace之前的片段到新的片段时,在新的片段中排除前面的片段响应

我有导航drawar共有12个片段..每个片段都有抽排方法。 除了位置= 1和位置= 5片段之外,每个片段都显示自己的齐射响应。 当我的应用程序启动 情况1:我打开位置1片段,打开位置5片段后,两个片段都有位置1片段响应。 情况2:如果我打开位置5的片段,打开后的位置1片段比两个片段都有位置1的片段响应。 情景1图像: 情景2图像: 我的片段交易方法类: private void showFragment(Fragment fragment) { llContainer = (LinearLayout)findViewById(R.id.container); if (fragment != null) { llContainer.removeAllViewsInLayout(); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.container, fragment, fragment.getClass().getName()); fragmentTransaction.commit(); fragmentManager.popBackStack(); } } @Override public void onItemSelected(int position) { Fragment frag = null; switch (position) { case POS_HOME: frag […]

FragmentTransaction:replace和addToBackStack不能一起工作?

我对Android开发相当陌生,现在运行起来怪异的行为。 我有一个空的FrameLayout是一个片段的容器。 如果用户第一次按下button,生成新的碎片并放入容器中。 如果用户稍后按下一个button,并且容器内存在片段,则用新生成的片段replace现有片段。 如果用户按回button,popup容器内的片段。 这是我的代码 public void showFragment(View v) { FragmentA f = new FragmentA(); FragmentManager fm = getSupportFragmentManager(); String tag = f.getFragmentTag(); // instance method of a to get a tag FragmentTransaction ft = fm.beginTransaction(); ft.setCustomAnimations(R.anim.slide_in_top, 0, 0, R.anim.slide_out_top); ft.replace(R.id.container, f, tag); ft.addToBackStack(tag); ft.commit(); } @Override public void onBackPressed() { FragmentManager fm = […]

退出animation不起作用; FragmentTransaction自定义animation不适用于隐藏

我使用show / hide来显示占据屏幕一部分的片段。 出于某种原因,当显示片段时,会播放slide_in_leftanimation,但是当片段被隐藏时没有animation,片段就会消失。 我已经尝试使用slide_in_leftanimationexit和enter ,这没有帮助。 当把代码追踪到支持包中时,animation就会被创build,并且显示它的代码正在被执行。 (我跟踪了.hide电话) FragmentManager fm = _activity.getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.my_fragment); FragmentTransaction ft = fm.beginTransaction(); ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left); if (fragment.isHidden()) { ft.show(fragment); fragment.setUserVisibleHint(true); } else { ft.hide(fragment); } ft.commit(); 以防万一这里是slide_out_leftanimation的xml <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-50%p" android:duration="@android:integer/config_mediumAnimTime"/> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="@android:integer/config_mediumAnimTime" /> </set> 编辑:这个问题可能与my_fragment与另一个包含webview的片段共享屏幕宽度有关。 当为my_fragment执行.show时,它变得可见并且在水平线性布局内共享空间(两个片段中每一个所占的屏幕宽度由weight参数确定)。

FragmentTransaction没有做任何事情

我正在学习片段,下面给出的是我的第一个片段程序。 一个简单的项目,我有2个屏幕。 当我点击第一个屏幕的下一个button时,需要显示第二个button。 我的目标是Android 2.1及以上,并使用兼容性包 AppMainFragmentActivity.java public class AppMainFragmentActivity extends FragmentActivity { @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.app_main_layout); } } app_main_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:id="@+id/fragment_container"> <fragment class="com.research.fragmentstudy.FirstFragment" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/id_first_fragment"/> </LinearLayout> FirstFragment.java public class FirstFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { […]

在setCustomAnimationcallback之前和之后的FragmentTransaction

我正在使用自定义animationreplace片段,我想在animation开始时禁用一些button,然后在animation结束时启用。 我怎样才能做到这一点?

在正在进行的FragmentTransaction过程中更改片段的z顺序

有没有办法如何改变在正在进行的FragmentTransaction期间显示片段的z顺序? 我有一个animation,其中两个片段相互重叠,我想从右侧滑动的片段(第二个片段)显示在另一个滑动到左侧的片段下面。 现在他们在交易过程中以相反的顺序显示。 这是我的一个animation代码: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="400" android:zAdjustment="bottom"> <scale android:toXScale="1" android:fromXScale="0.9" android:pivotX="50%p" android:pivotY="50%p" android:toYScale="1" android:startOffset="300" android:fromYScale="0.9"/> <translate android:fromXDelta="50%p" android:interpolator="@android:interpolator/overshoot" android:toXDelta="0"/> </set> 这里是交易的代码 FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.show(fragmentToShow).hide(fragmentToHide).commit(); 我想有fragmentToHide出现在fragmentToShow 。 我试图解决的android:zAdjustment属性,但因为它显然只适用于窗口animation,它只是没有为我工作。

以编程方式添加Fragment的后退键导致空的容器

我有一个分散布局的问题,我真诚地道歉,如果之前已经回答,我太愚蠢,找不到。 我search了几个小时,没有得到任何东西(好吧,我有很多,但没有解决我的问题)。 所以这里是我的设置:我有两个窗格布局使用两个FrameLayouts作为我的片段的容器。 activity_listing.xml: <FrameLayout android:id="@+id/listing" /> <FrameLayout android:id="@+id/details" /> 在打开应用程序(在片段的活动onCreate)一个名为列表片段被添加到FrameLayout“列表”编程使用FragmentTransaction。 public class ListingActivity extends FragmentActivity implements ListingFragment.Callbacks { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listing); // Displaying the first listing here … Fragment fragment = new ListingFragment(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.add(R.id.listing, fragment); ft.addToBackStack(null); ft.commit(); … } 这个ListingFragment在运行时被replace了几次,所以我必须创build它,而不是用XML来定义它。 我尝试了后者 <fragment android:name="com.example.app.ListingFragment" /> 但之后它将不会被编程replace或删除。 我只能添加(),然后通过新的旧的可见。 但是这不是问题 – 只是我的解释。 到目前为止,所有这些工作都应该如此,列表创build和显示等,所以没有问题。 但: […]