问题标签 [android-nested-fragment]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - DialogFragment 中的 ViewPager + FragmentPagerAdapter 得到“IllegalArgumentException:No view found...”
我试图显示一个 FragmentDialog (创建并显示为一个对话框,而不是作为视图层次结构中的内容添加),其中有一个 ViewPager,其内容由 FragmentPagerAdapter 给出(提供由图像组成的片段)。
该代码在从 FragmentActivity 显示 ViewPager + FragmentPagerAdapter 时完美运行,但在从 FragmentDialog 执行此操作时会出现以下异常:
“IllegalArgumentException:没有为片段 SimpleFragment 找到 id 0x7f040077 的视图...”
这是我的代码:
一个带有按钮的 SherlockFragmentActivity,用于创建和显示对话框。
片段对话框:
这是非常简单的 MyFragmentPagerAdapter,我只放了 getItem() 方法,并且 nullPointer 检查:
最后是 SimpleFragment:
更多信息,如果传递给适配器的内容(具有 3 个整数的 int 数组)的长度为零,则适配器不会尝试创建任何片段,因此对话框正确显示但为空(如预期的那样)。膨胀时在 SimpleFragment.onCreateView() 抛出异常。异常中引用的 id(未找到)对应于 ViewPager 的 id,并在 R.layout.simple_fragment 中正确定义。
我还尝试使用 AlertDialog.builder 以及直接使用 Dialog() 构造函数构建 Dialog,但得到相同的行为。
android - 使用支持库 v4 修订版 11 的嵌套片段
从今天早上开始的支持库的最后一个版本(Android Support Package v4 revision 11)应该支持嵌套片段。
在我的项目中,我有一个包含ViewPager的片段,而这个 ViewPager 包含几个片段。
我打电话getSupportFragmentManager()
而不是getFragmentManager
使用支持库的FragmentManager。
问题是我仍然遇到崩溃,例如:
有什么我做错了吗?或者支持不支持真正的嵌套片段?
我的交易就这么简单:
android - 如何使用嵌套片段(Android 4.2)在 ViewPager 中添加片段
我有一个ViewPager
三个Fragments
,每个都显示一个List
(或Grid
)。
在新Android API level 17
版本(Jelly Bean 4.2)中,其中一个功能是嵌套片段。新的功能描述说:
如果您使用 ViewPager 创建向左和向右滑动并占用大部分屏幕空间的片段,您现在可以将片段插入到每个片段页面中。
所以,如果我理解正确,现在我可以在里面创建一个ViewPager
with Fragments
(例如,里面有一个按钮),当用户按下按钮时显示另一个Fragment
而不松动ViewPager
使用这个新功能。
我花了我的早上试图实现这几种不同的方式,但我无法让它工作......有人可以添加一个简单的例子来说明如何实现这个吗?
PS:我只对这样做感兴趣,getChildFragmentManager
以了解如何工作。
android - Android 4.2:带有嵌套片段的回栈行为
在 Android 4.2 中,支持库支持嵌套片段,请参见此处。我玩过它,发现了一个关于回栈和getChildFragmentManager()的有趣行为/错误。使用 getChildFragmentManager() 和 addToBackStack(String name) 时,通过按下后退按钮,系统不会将后退堆栈运行到前一个片段。另一方面,当使用getFragmentManager()和 addToBackStack(String name) 时,通过按下后退按钮系统返回到前一个片段。
对我来说,这种行为是出乎意料的。通过按下我设备上的后退按钮,我期望最后添加到后退堆栈的片段将被弹出,即使该片段已添加到子片段管理器中的后退堆栈。
这种行为正确吗?这种行为是错误吗?这个问题有解决办法吗?
带有 getChildFragmentManager() 的示例代码:
带有 getFragmentManager() 的示例代码:
java - onActivityResult() 未在新的嵌套片段 API 中调用
我一直在使用Android 包含在支持库中的新嵌套片段API。
我在使用嵌套片段时遇到的问题是,如果一个嵌套片段(即已通过FragmentManager
by 返回的片段添加到另一个片段的片段getChildFragmentManager()
)调用startActivityForResult()
,则不会调用嵌套片段的onActivityResult()
方法。但是,父片段onActivityResult()
和活动onActivityResult()
都会被调用。
我不知道我是否遗漏了有关嵌套片段的某些内容,但我没想到所描述的行为。下面是重现此问题的代码。如果有人能指出我正确的方向并向我解释我做错了什么,我将不胜感激:
test_nested_fragment_container.xml 是:
android - 嵌套片段和后栈
Back Stack 是否支持与 Android 中的嵌套 Fragment 交互?
如果是这样,我做错了什么?在我的实现中,后退按钮完全忽略了我将此事务添加到后退堆栈的事实。我希望这不是因为嵌套片段的问题,而只是我做错了一些事情。
以下代码位于我的一个片段中,用于将新片段与当前显示的任何嵌套片段交换:
android - getChildFragmentManager() 以编程方式(动态)添加片段?
如何在以getChildFragmentManager()
编程方式(动态)添加Fragment
的 s 上使用(或“我们可以使用”)?
这是我的例子。
我有一个MainActivity
,一个OuterFrag
,还有一个InnerFrag
。我将OuterFrag
通过. 而且,我将通过. 但我想完全添加为 的孩子,而不是替换并成为.MainActivity
FragmentManager
InnerFrag
OuterFrag
FragmentManager
InnerFrag
OuterFrag
OuterFrag
MainActivity
我想保持这个层次结构:MainActivity -> OuterFrag -> InnerFrag
. 所以MainActivity总是可以调用OuterFrag。
但不要从这个层次结构改变:MainActivity -> OuterFrag
到这个层次结构:MainActivity -> InnerFrag
这MainActivity
将丢失OuterFrag
.
这是我的示例代码。
MainActivity.java
activity_main.xml
OuterFrag.java
外部碎片.xml
InnerFrag.java
inner_frag.xml
目前,上述代码可以正常运行。但它实际上正在改变InnerFrag
为新的孩子MainActivity
。这可以通过两个系统打印输出语句来验证之前:对象和之后:对象已更改。在 中OuterFrag.java
,如果getChildFragmentManager()
运行语句而不是getFragmentManager()
语句,我们将得到以下运行时错误:
使用getChildFragmentManager()
在理论上是正确的。它可以用于非编程方式添加的片段(这意味着将activity_main.xml
's更改<FrameLayout>
为<fragment>
、添加属性android:name="com.example.frag.OuterFrag"
并删除 中的第一条getSupportFragmentManager()
语句MainActivity.java
)。它保持正确的层次结构:MainActivity -> OuterFrag -> InnerFrag
. 但原片断(outer_frag.xml
)的文字是永远不能被带走的。
总之,我想总是参考OuterFrag
。MainActivity
我想OuterFrag
充当一个占位符来加载不同InnerFrag
的s。简而言之,当它以编程方式(动态)添加时getChildFragmentManager()
,我想调用它。OuterFrag
java - Android:在多个片段之一中使用 MapFragment
我找了又找,没有人完整回答。
我有一个项目需要在 Android 项目的多个片段之一中使用新的 MapFragment。
到目前为止,我拥有它就像一个 FB 移动应用程序。它在左侧显示一个菜单,用户可以选择一个项目并显示一个片段。到目前为止,我搜索和搜索。没有完整和可行的答案。
我喜欢看到示例代码和/或示例项目,它们可以在 Android 应用程序中的许多片段的片段中显示新的 Google MapFragment。
提前致谢。
android - 在嵌套的 FragmentTabHost 中选项卡切换后片段不可见
我的一个片段的布局中有一个 FragmentTabHost(我们称之为 parentFragment)。现在,我在 parentFragment 的 onCreateView 中以编程方式初始化进入 tabhost 的每个片段。创建 parentFragment 后,一切似乎都可以正常工作,并且正确显示了第一个选项卡的片段。
但是一旦我切换选项卡一次,片段就会消失(我可以看到 tabhost 的背景颜色,但看不到 tabcontent-container 的内容)。当我切换回它时,第一个片段也消失了。正如我的日志记录显示的那样,这些片段实际上是在创建的,但它们是不可见的。
我认为它与(重新)创建片段有关,因为我也尝试使用带有 FragmentPagerAdapter 的 ViewPager。在那里,我可以愉快地在前两个片段之间切换(由于 setOffscreenPageLimit() ==1 而预加载),但是(重新)创建的片段也是空白的。
有什么想法吗?
这是我的一些代码:
parentFragment 的 XML 的提取:
parentFragment 的 XML 的提取:
子选项卡片段中的简单布局膨胀:
android - 带有 ViewPager 的 ActionBarSherlock 在返回堆栈和返回堆栈时不调用 ViewPager 片段生命周期方法
我有一个使用 ActionBarSherlock 的应用程序,在主片段中我有一个 ViewPager,它使用几个片段来显示列表的不同对象。
主要片段:
ViewPagerAdapter:
在每个片段中,我可以创建一个带有新列表的新 Main 片段以显示在 ViewPager 中,并用这个新片段替换内容。
ViewPager 片段:
这可以正常工作,直到我按下并且前一个主片段从后台堆栈返回。
屏幕是空的(因为没有调用 onCreateView 布局没有膨胀),ViewPager 中片段的生命周期方法在主片段进入 backstack 时或返回时都不会被调用。ViewPager 的片段中调用的唯一方法是 setMenuVisibility(),因此只有其中的代码运行。
任何人都知道解决此问题的方法以及为什么会发生这种情况?
不知道这是否重要,但我必须从 android 2.3 开始支持。