问题标签 [fragmenttransaction]
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 - 在片段事务中添加和替换是否可以?
对以下代码有任何想法吗?在我的测试中,我发现替换的片段没有被破坏,并且在弹出返回堆栈时实例仍然存在。只是想验证这是使用片段事务的有效方式。
我使用替换的原因是它会导致被替换的片段运行它的退出动画。
android - 使用 getFragmentManager().beginTransaction() 在 Android 中为 FragmentTransaction 键入不匹配
当我尝试通过在活动中声明 FragmentTransaction ft = getFragmentManager().beginTransaction() 来替换片段时,我总是有以下错误警报:
并且该类是 ActivitySupport 继承自:
我试图将 getFragmentManager 更改为 getSupportFragmentManager(),并且警告该方法未定义变得更加糟糕。
那么我该怎么做才能使 getFragmentManager() 成为 v4 支持的方法呢?
android - 带有 Android 片段的 IllegalStateException
我有一个屏幕,我想在单击某些视图时通过隐藏和显示(而不是替换它们)来交换两个片段。这是我的代码:
R.id.fragment_holder
是一个框架布局。我没有<fragment>
在我的布局中声明任何标签。本来我的swap方法就是这样...
...但是由于我不会进入这里的原因,我想做显示/隐藏而不是替换。
从逻辑上讲,这应该非常简单:如果有片段显示,请先将其隐藏。如果是第一次显示这个片段,添加它,否则显示它。然后保存当前片段。
问题出在第一次启动时,这会崩溃,IllegalStateException
并说明已添加片段。
android - 在 ActionBar 选项卡下的 Fragments 中添加/替换 Fragments
我不确定我是否在这里遗漏了任何基础知识。我有一个托管操作栏选项卡的活动:所以这里是 MainActivity 的结构 -> 有两个操作栏选项卡 F1 和 F2 || Frag.java 是承载定义要替换的 FrameLayout 的 xml 的容器片段|| F1 是 Frag1.java 其中 Frag1.java 显然是我们的好旧片段|| F2 是 Frag2.java,其中 Frag2.java 是另一个片段 在我的 MainActivity 中,我创建了两个选项卡,*注意: *两者都具有相同的片段,即 Frag.java,然后在 Frag.java onCreateView 中我尝试添加片段。这不会发生什么问题。
(理想情况下,我希望选项卡下的片段被按钮单击事件上的另一个片段替换)
这是我的主要活动
MainActivity.java
来到我的简单片段,我有三个设置 Frag,Frag1,frag2
下面是frag.java
下面是我的parent.xml
下面是frag2.java
在上面的片段中,您看到按钮单击应该替换片段,但我什至无法将这个片段放置到位。
自从三天以来,我一直在玩弄这个。我真的很感激这里的任何帮助或建议,或者如果有人能指导我哪里出错了,那就太棒了!
android - 如何实现 FragmentManager 和 FragmentTransaction 来替换单个片段?
我有一个包含 3 个片段的活动;标题;身体; 页脚(与 HTML 中的点相同)。bodyfragment 包含三个按钮,每个按钮都应该用另一个替换中间片段(body; 本身),但我不知道如何在这里工作 FragmentManager 和 FragmentTransition。关于其他人实现其片段的方式,我似乎无法在这里找到其他人的问题的任何连贯性。似乎每个人都有自己的方法,或者只是没有在他们的线程中包含完整的代码。
MainActivity.java
}
测试片段.java
}
BodyFragment.java
}
XML 中的片段
XML 中的 BodyFragment 布局(按钮 x3)
java - Communication between Activity and Service to change Fragments(Login)
I have LoginActivity
that displays the Login Fragment initially . Now when the user fill the data and press login button I send the credentials to an IntentService
. before the service hit the server it sends a local broad cast intent to the LoginActivity
to display the Loading Fragment (replace the login fragment) . If the login process successfully terminated it send a broadcast intent to the LoginActivity
to start the MainActivity
, and if it fails it send a broadcast intent to the LoginActivity
to display the Error Fragment .
Now I am doing things the right way ? what about having this error
? I thing this error will happened , now how can i handle the FragmentTransaction in the onReceive() method where i change Fragments in the Login Activity.
is there a better architecture to handle the login using Activity
and IntentService
?
android - Android:在 DialogFragment 中使用 beginTransaction().replace 获取错误
我正在尝试运行此代码:
这种方式说:Must use non-zero containerViewId
......我不知道我必须在替换中引入的DialogFragment中的containerViewId(http://developer.android.com/reference/android/support/v4/app/FragmentTransaction.html#replace% 28int,%20android.support.v4.app.Fragment,%20java.lang.String%29 )
欢迎任何帮助
android - FragmentTransaction 之后调用了哪些方法
在 a 中进行 Transaction 后,会调用FragmentActivity
Fragment吗?onActivityCreated()
我ListView
用. onActivityCreated()
_ adapter
我希望事务是另一种在需要时更新列表和适配器的方式。即使该 Fragment 已经在视图中并且父级 Activity
调用了一个 Transaction 到同一个 Fragment。
还是onCreateView()
更合适?
android - IllegalStateException:已添加片段 - 在 Android OS 4.3 上的应用程序启动期间
我的 Android 应用程序有一个单独的活动,其中一个选项卡控制器托管 4 个选项卡——每个选项卡都由一个片段表示。当我在运行 OS 4.03 的测试设备上运行该应用程序时,该应用程序可以运行,并且我可以导航到不同的选项卡等。当该应用程序在具有 OS 4.3 的设备上运行时,该应用程序在启动期间崩溃并出现 IllegalStateException: Fragment already added :MyFirstTabFragment。
这是堆栈跟踪:
java.lang.IllegalStateException:片段已添加:MyFirstTabFragment{41866dc0 #0 id=0x7f080000 MyFirstTabFragment} at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1128) at android.app.BackStackRecord.run(BackStackRecord.java:616)在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435) 在 android.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:474) 在 android.support.v13.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:167) 在android.support.v4.view.ViewPager.populate(ViewPager.java:1068) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:914) 在 android.support.v4.view.ViewPager.onMeasure( ViewPager.java:1436) 在 android.view.view.measure(View.java:15848) 在 android.view。ViewGroup.measureChildWithMargins(ViewGroup.java:5012) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.view.View.measure(View.java:15848) at android.view.ViewGroup.measureChildWithMargins(ViewGroup .java:5012) 在 com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302) 在 android.view.View.measure(View.java:15848) 在 android.view.ViewGroup.measureChildWithMargins(ViewGroup. java:5012) 在 android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 在 com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189) 在 android.view.View.measure (View.java:15848) 在 android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905) 在 android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104) 在 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284) 在 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) 在 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) 在android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) at android.view.Choreographer.doCallbacks(Choreographer.java:562) at android.view.Choreographer.doFrame(Choreographer.java:532) at android.view .Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 在 android.os.Handler.handleCallback(Handler.java:730) 在 android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper。在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 android.app.ActivityThread.main(ActivityThread.java:5103) 的 loop(Looper.java:137)。lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit. java:553) 在 dalvik.system.NativeStart.main(Native Method)
该问题似乎是由于尝试在我的 FragmentStatePagerAdapter 扩展类的 getItem() 方法中的 FragmentTransaction 中添加片段引起的,如下所示:
我调用 add() 的原因是我可以将标签与我的片段相关联,以便稍后访问这些片段,以便在选择/取消选择选项卡时调用这些片段实例上的方法。
我搜索了有关 IllegalStateException 的各种帖子,并尝试了各种建议,包括调用 replace() 而不是 add()、调用 remove() 然后调用 add()、调用 MyFirstTabFragment.instantiate() 而不是 new MyFirstTabFragment(),这些都没有更改已纠正了问题。
我怀疑我可能在此过程中过早地执行此 FragmentTransaction,因为当我尝试使用我的标签添加或替换片段时,ViewPager 当前正在添加片段。有没有人对此过程有更好的见解?有没有更好的地方可以让这些单独的 add() 调用来标记我的片段?
在此先感谢您的任何建议!
android - FragmentTransaction:replace 和 addToBackStack 不能一起工作?
我对 Android 开发相当陌生,现在遇到了奇怪的行为。
- 我有一个空的 FrameLayout 作为片段的容器。
- 如果用户第一次按下按钮,则生成新的 Fragment 并放入容器中。
- 如果用户稍后按下按钮并且容器内有现有片段,则将现有片段替换为新生成的片段。
- 如果用户按下后退按钮,则弹出容器内的片段。
这是我的代码
当用户第一次按下按钮时,它的行为就像我预期的那样,将新片段添加到容器中。但是,当容器仍然包含一个片段时,用户第二次按下按钮,而不是替换,它在现有片段之上添加新片段。因此,容器内有 2 个碎片,2 次后按以移除所有碎片。
我发现如果我删除线
并像下面那样重做 onBackPress() 方法,它再次像我预期的那样工作(一次容器中的 1 个片段)
基本上,手动删除片段而不是 popFromBackStack 方法
所以,我的问题是
- replace 和 addToBackStack 不能一起工作?
- 或者,我做错了什么?
感谢所有意见和建议。