Articles of 片段

在Container中按标记名称查找片段

我有一个相对布局,我在相对布局中添加片段。 喜欢这个 HomeFragment mHomeFragment = new HomeFragment(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction(); if(mHomeFragment!=null&& mHomeFragment.isAdded()){ fragmentTransaction.show(mHomeFragment); }else { fragmentTransaction.add(R.id.order_container,mHomeFragment,”Search”); } fragmentTransaction.commit(); 我还有一个文本视图,我必须显示在相对布局中添加的片段的名称。 喜欢搜索以防万一。 如何获取在我的相对布局中添加的片段名称,假设为id = R.id.order_container

ActionBar菜单项在NestedFragments中消失

由于android 4.2现在支持NestedFragment ,并将其添加到支持v13。 我在经典情况下使用这个NestedFragment:创建可以左右滑动并消耗大部分屏幕空间的fragmentA,并将fragmentB和fragmentC插入到每个片段页面中。 我的问题是我在fragmentB中创建的MenuItem,而fragmentC不能在Activity的actionbar上显示。在使用NestedFragment之前,它运行良好。

循环ViewPager。 片段在第一轮之后不能正常工作

好的,所以我需要循环ViewPager。 我真的很难实现它。 现在我已经实现了它并且它正在工作正常,因为圆形滚动是关注。 但是我注意到了一个问题。这是在第一轮滚动片段不起作用之后。 我有三个碎片,里面有一个按钮。 按钮在第一轮工作,但当我回到第一页按钮不起作用。 ps我使用假页面技术使viewpager循环。 这是代码 mViewPager.setAdapter(new PagerAdapter(getSupportFragmentManager(), this)); //mViewPager.setOnPageChangeListener(new CircularViewPagerHandler(mViewPager)); mViewPager.setCurrentItem(1, false); mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { if (position == 0) { mViewPager.setCurrentItem(3, false); Log.d(“TAG”, “Swiped before first page, looping and resetting to last page.”); } else […]

好的是更新片段而不是创建新实例?

在Android文档中使用片段的示例中,当应用程序处于“双视图”模式时,只要应用程序需要显示不同标题的详细信息,就会重新创建详细信息片段。 FragmentTransaction.replace()用于将每个旧的详细信息片段实例换成​​新的。 这是推荐的做法吗? 当真正的意图(没有双关语意图)要更新UI显示的内容而不是UI本身时,创建新的UI实例并不浪费。 在我看来,创建新实例的唯一原因是,如果有人打算将它们添加到backstack,那么用户可以回溯步骤。 否则,直接更新片段是否安全/可取? 在示例的情况下,它将意味着一个沿着DetailsFragment.setShownIndex() 。 这将被调用,传入新的标题索引,而不是重新创建DetailsFragment 。 假设我们有一个示例版本,其中一个活动管理两个片段,但一次只显示一个片段,根据需要交换每个片段。 活动是否可以创建每个片段的实例,保留对每个片段的引用,然后根据需要简单地添加或删除这两个实例? 这可能是一个棘手的结果,当titles标题片段处于resumed状态时(即在’foreground’中),选择一个标题将导致在细节片段进入时调用DetailsFragment.setShownIndex() stopped状态。 好主意? 馊主意? 提前致谢。

TabHost一次显示内容(onCreate)

我有一个TabHost在一个navigationDrawer内部,我面临这个奇怪的问题,当我从TabHost出现作为导航抽屉项目存在另一个导航抽屉项目并返回到TabHost它将不会显示其内容,第一个时间它完美地工作,但是当我改变项目并回到它时,它将不会显示内容; 换句话说,它不会加载子片段,除非我关闭应用程序并重新启动它或更改方向(重新创建片段)。 它是如何看起来我第一次打开它(含内容) 转到另一个navDrawer项并返回TabHost后 TabHost片段: import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TabHost; import android.widget.TabWidget; import java.util.ArrayList; import info.fds.Emirates.R; public class MyFragment extends Fragment { private TabHost mTabHost; private ViewPager mViewPager; private TabsAdapter mTabsAdapter; public MyFragment() { } @Override public void onCreate(Bundle instance) […]

片段已添加。 支持lib

自从我升级我的App以使用支持lib rev。 11并针对SDK 4.2编译我收到以下错误 java.lang.IllegalStateException: Fragment already added: i{4079e598 #2 id=0x1020002 i} at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1159) at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:729) at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1493) at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:477) at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:174) 我已经阅读了有关stackoverflow的类似问题。 他们中的一些人建议避免使用我不使用的替换方法。 导致回滚崩溃的事务如下所示: ft.remove(oldFrag).add(newFrag).addToBackStack(null).commit() 其他评论说如果您使用的片段转换在用户再次按下之前无法快速完成,则可能会出现这种情况。 由于我确实在给定的片段上使用过渡animation,这可能是原因。 但是,删除转换不是一个选择,因为这只发生在运行2.3.x的手机上,并且通过升级到lib 11和sdk 4.2引入了错误,我希望谷歌将在下一个版本中修复它。 有任何类似的问题,有关是否计划在4.2.1中修复或支持r12的信息,或建议我可以做些什么来规避错误?

尽可能防止活动被破坏

我有一个应用程序,一个包含片段的活动应用程序。 这个应用程序的通常用例是,你启动它并把电话拿走,不时,你回到手机并插入一些数据…这是一个日志应用程序,你正在做一些事情并插入你的结果进入应用程序… 我有这个问题,不时地,我的活动被摧毁并用空包重新创建……(大多数时候情况并非如此,但偶尔会发生这种情况……)。 我的应用程序有时会启动服务,即使这种服务在这种情况下被杀死… 这意味着系统已杀死我的应用程序,是吗? 我怎么能避免这个? 我需要保留用户数据和当前的顶级片段……并且它们被保存到捆绑包中,只要状态和数据得到保存,一切正常… 顺便说一句,我的活动始终是TOP ACTIVITY,只是屏幕经常关闭……我只想让我的活动尽可能长时间活着,直到用户离开后面的按钮……或者保存状态可靠 重要的提示 onSaveInstance并不总是有效(它不是生命周期的一部分,因此不能保证被调用)…它只能在大多数情况下工作……我需要一种方法来始终工作…如果android杀了我的应用程序。 ..

Android:Fragment的新getContext()方法是哪个上下文?

Fragment.getContext()的文档说明了这一点 返回Fragment当前与之关联的上下文。 它是在api 23中引入的http://developer.android.com/reference/android/app/Fragment.html#getContext() 这是Application还是Activity Context ?

Android ADT:没有fragment_main.xml,只有activity_main.xml

我正在尝试学习如何编写Android应用程序,所以我下载了谷歌提供的ADT软件包,我尝试按照允许我创建一个简单应用程序的教程。 但是,在这些过程中,有几条指令告诉我打开fragment_main.xml文件,但我的layout / res /目录没有这个文件,只有activity_main.xml文件。 此外,在创建新的Android活动时,从来没有选择命名我的片段布局,表明eclipse由于某种原因不会创建它。 我一开始并不认为这会是一个问题(我只是编辑了activity_main),直到我意识到教程要求我们使用片段类或xml文件中的一些信息。 有谁知道为什么我的Eclipse IDE没有创建fragment_main.xml? 如有必要,我会尝试提供更多细节。

具有setRetainInstance(true)的片段是否能够在进程关闭后继续存在?

考虑到这种情况:如果我创建了一个活动并且它移动到后台并且此活动包含设置为setRetainInstance(true)的Fragment ,那么Android OS可能在某些时候仍然决定关闭活动的托管过程以免费记忆。 然后通过onSaveInstanceState(Bundle)保存Activity的状态 – 据我所知 – 将相关的Bundle写入文件系统以使进程关闭。 (因此bundle中对象的要求是Serializable )。 稍后,可以通过onRestoreInstanceState(Bundle)在新进程中检索应用程序状态。 相反,我的Fragment允许包含不一定是Serializablevariables。 因此,我想, Fragment不能像Bundle一样存储在磁盘上。 那么当进程被杀死时,我的片段会发生什么? 我想知道这个阅读开发人员指南( http://developer.android.com/guide/components/processes-and-threads.html ): 保存当前对用户不可见的活动的进程(活动的onStop()方法已被调用)。 这些过程对用户体验没有直接影响, 系统可以随时终止它们以回收前台,可见或服务进程的内存 。 通常有许多后台进程在运行,因此它们保存在LRU(最近最少使用的)列表中,以确保具有用户最近看到的活动的进程是最后被杀死的进程。 如果活动正确实现其生命周期方法并保存其当前状态 ,则终止其进程将不会对用户体验产生明显影响,因为当用户导航回活动时,活动将恢复其所有可见状态。 我理解上面的杀戮 ,以便关闭VM实例并将进程的状态写入文件系统(这里是Bundle play)。 稍后读取包以恢复该过程。 因为片段的保留不涉及生命周期方法,因为我不知道如何保留例如指向网络连接的指针(你当然不应该在片段中有这样的指针),我想知道片段是否如果在此期间关闭该过程,仍然会恢复。 我得出结论,他们肯定需要重新创建,因此生命周期方法应尽可能优于setRetainInstance(true) 。 这个假设有意义吗?