Articles of android fragments

具有透明背景的PreferenceFragment?

我创建了一个包含两个类别和一个checkbox的PreferenceFragment,但是,当我在我的应用程序中显示它时,背景看起来是透明的。 我可以看到主要活动,字段和PreferenceFragment已经放在主要活动的顶部…这个解决方案是什么? 在我的主要活动中,我这样做是为了在选择设置按钮时打开PreferenceFragment: @Override public boolean onOptionsItemSelected(MenuItem item) { //handle presses on action bar items switch (item.getItemId()) { case R.id.action_settings: getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit(); return true; default: return super.onOptionsItemSelected(item); } } 我的PreferenceFragment代码如下所示:public class SettingsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); } } 我的preferences.xml看起来像这样: 我尝试了Stack […]

带有Fragments和Separate活动的两个面板UI

我正在启动一个Honeycomb应用程序,该应用程序将具有基本的两个面板布局,左边一个面板用于菜单,另一个面板用于每个部分的主要function。 与Fragments API的可用示例相反,右侧面板上显示的内容包含每个菜单选项的完全不同的UI。 根据所选部分替换正确的片段很有诱惑力,但这意味着在整个应用中只使用一个活动,这听起来不太好。 此外,片段的生命周期与活动相关联,因此在活动被杀死之前不会杀死任何碎片,导致许多碎片“活着”。 但是,对于每个菜单选项,具有两个面板的不同活动意味着必须在每个活动中添加用于菜单的片段,并且在应该具有菜单的所有部分中将存在不一致的布局。 这里的最佳做法是什么?

片段之间的事务仅在一个ActionBar选项卡内

我有一个带有三个选项卡(ActionBar选项卡)的应用程序,每个选项卡一次只有一个片段。 TabListener TabsActivity Tab1 – > ListFragment1 – > ListFragment2 – > Fragment3 Tab2 – > Tab2Fragment Tab3 – > Tab3Fragment 问题是当我从ListFragment1到ListFragment2创建FragmentTransaction(在OnListItemClicked内)时,其他选项卡中的片段也会更改为ListFragment2。 最后,我想仅在选项卡内更改片段并保留其他选项卡的状态。 我已经保存了状态(OnSavedInstance())。 你知道我在这里缺少什么吗? 一些代码: public class TabsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tabs); // setup Action Bar for tabs ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // instantiate fragment for […]

Android内存管理粒度 – 活动还是流程?

我看到不一致的文档和讨论有关Android内存不足时所发生的事情以及操作系统重新声明内存的步骤。 更具体地说,Android会以活动/片段或整个过程的粒度杀死吗? 例如,如果在活动A前面启动了活动B(并且两个活动都是同一个应用程序/进程的一部分),则活动A可以被操作系统杀死,而活动B位于前台,用户正在与活动B交互(假设:屏幕保持打开,当前应用程序保留在前台,没有发生方向更改)? 2011年的答案 (由Dianne Hackborn在谷歌的Android团队中)表明,Android会以流程的粒度而不是活动来杀死。 在重新创建活动的Android开发者页面上,它说: 如果系统当前已停止且未长时间使用或前台活动需要更多资源,系统也可能会破坏您的活动,因此系统必须关闭后台进程才能恢复内存。 注意歧义:“系统必须关闭后台进程 ”。 在OnSaveInstanceState的Android Developer页面上,它说: 例如,如果活动B在活动A前面启动,并且在某些时候活动A被杀死以回收资源,活动A将有机会通过此方法保存其用户界面的当前状态 在阅读了这些以及许多其他文档页面和在线讨论之后,目前尚不清楚正确的答案是什么。 我也有关于片段的相同问题:由于内存不足而导致背景片段被杀死,而整个过程是否被杀死?

Android:什么在以后的API中取代了android.support.v4.app.NavUtils?

我正在为平板电脑编写应用程序,API等级为13或更高。 因此我不需要支持库,即android.support.v4.app.Fragment已被android.app.Fragment替换为类似。 在支持库中有一个整洁的类android.support.v4.app.NavUtils ,但我在高级API中找不到任何等效的类。 那么是什么取代了它或它的方法呢? 如何在不导入支持库的情况下使用其方法? 可能吗?

清除FLAG_TRANSLUCENT_STATUS标志后,为什么我的布局搞砸了?

我有一个Activity应用程序。 它显示一个LoginFragment ,它使状态和导航条LoginFragment半透明,以便它可以在其后面显示背景图像。 但是,登录后,此片段将被另一个需要显示常用固态和导航栏的片段替换。 因此,在删除LoginFragment之前, LoginFragment会取消设置的标志,以使条形不透明。 我面临的问题是,在我登录后,具有正常状态和导航栏的片段将其操作栏向下移位。 如果我将屏幕旋转到横向然后再回到纵向以强制重新布局,则操作栏会快速回到正确的位置。 状态栏是半透明的。 这很好。 在下一个屏幕上,操作栏向下移动。 另外请注意,根据主题,状态栏是黑色的,应该是灰色的。 现在,如果我回到第一个屏幕,顶部的半透明条形图很好,但整个内容向上移动,在下面留下一个空白的空白区域。 LoginFragment中的代码,它以编程方式使条形LoginFragment半透明并恢复它们: – @Override public void onResume() { super.onResume(); if (hasTransparentStatusBar()) { setStatusBarTranslucent(); } } @Override public void onPause() { if (hasTransparentStatusBar()) { setStatusBarOpaque(); } super.onPause(); } protected boolean hasTransparentStatusBar() { return true; } protected void setStatusBarTranslucent() { if (Build.VERSION.SDK_INT >= 21) { […]

创建和使用片段的视图虽然对用户不可见

原因 我需要这样做,因为我想得到片段视图的可绘制缓存,然后从该视图创建一个位图。 然后,此位图将用于在Facebook上发布。 问题 当我创建Fragment时,视图没有被创建,因为它们没有通过Fragment Transaction添加,因为它们包含的视图对用户不可见。 我也不想手动绘制这些视图,因为我无法获得屏幕的精确副本。 我的问题 有没有一种方法可以在没有实际显示片段的情况下获得片段的完整function(与通过FragmentTransaction添加它相同的function)? 我需要能够在片段不可见时访问片段的视图。 提前致谢

RecyclerView不会滚动到底部

我遵循了recyclerview指南并为我正在制作的应用程序构建了一个,但由于某种原因它不会滚动到底部。 我将它与谷歌代码片段以及其他在线代码片段进行了比较,看不出差异。 我发布了一张图片和我正在使用的代码。 我正在使用制表符,因此recyclerview填充在片段中。 该应用程序的外观如下: View post on imgur.com 适配器类: public class MyAdapter extends RecyclerView.Adapter { private List groups; // Provide a reference to the views for each data item // Complex data items may need more than one view per item, and // you provide access to all the views for a data item […]

支持库从23.1.1升级到25.1.0后,popBackStack()行为有所不同

从Android支持库23.1.1升级到最新的25.1.0 , popBackStack()的行为在我们的应用程序中发生了变化。 例如,我在BackStack上有三个FragmentTransactions 。 现在第四个FragmentTrsansaction被添加到BackStack。 FragmentTransactions是这样的: FragmentTransaction transaction = fragmentManager.beginTransaction() .replace(R.id.fragment_container_single, target, CoreActivity.FRAGMENT_TAG_LEFT) .addToBackStack() .commit(); 片段#4具有逻辑,它在onViewCreated()期间自动路由到片段#5(我知道,它很难看,我必须更改它)。 无论如何,当我想要离开片段#5时,我想恢复到片段#4之前显示的片段。 我按事务名称执行此操作: getFragmentManager().popBackStack(“”, FragmentManager.POP_BACK_STACK_INCLUSIVE); 或这个: getFragmentManager().popBackStack(“”, 0); 但是通过这个调用,片段#4的onCreateView()和onViewCreated()将被调用,片段#5将立即添加到BackStack。 即使我恢复到片段#1 onViewCreated()也会为BackStack上的每个片段调用 – 片段#2,片段#3和片段#4,即使它们对我想要返回的FragmentTransaction无关紧要。 在支持库23.1.1我成功跳回到片段#3。 popup包含#4的片段而不调用onViewCreated() 。 这似乎更直观,对我来说,因为在FragmentTransaction的“外部”调用onViewCreated() for Fragments似乎是不必要的? 我知道, addToBackStack()只保存事务状态而不是片段本身,并且可能必须重新创建片段。 有相似的post ,但我想了解为什么它在支持库更新后中断。 我无法在任何地方find变化。 这是一个Bug还是现在的Bug? 我正在改变我的代码。 感谢帮助! 更新升级到support-library 25.1.0后,我有更多生命周期问题/更改。 还有一个谷歌问题我另外评论了我的问题。 目前我不得不回到最新的24.2.1并密切关注这个话题。 这只是我的临时解决方案。 这些问题始于support-library 25.0.0。

SlidingTabLayout选项卡之间的通信

我已经搜索了很多关于如何使用SlidingTabLayout在片段之间进行通信但是没有真正得到一个好答案。 我知道使用ActionBar但是我想要使用SlidingTabLayout的android lollipop的新方法。 我试过这个 – > http://android-er.blogspot.in/2012/06/communication-between-fragments-in.html但我想要材料设计。 我将此链接http://www.android4devs.com/2015/01/how-to-make-material-design-sliding-tabs.html用于制作材料设计滑动标签。 现在我想知道如何在滑动标签之间进行通信 。 我已经尝试了很多,但找不到我想要的答案。 任何帮助都会非常感激。