这是我的布局设计:
MainActivity
|
MainFragment
|
TabHost
|
_____________________
| | | |
Tab1 Tab2 Tab3 Tab4
|
ft.replace(MainActivityContainer, FragmentThatDoesSomething)
|
FragmentThatDoesSomething
正如您所看到的,有一个按钮可以在主活动容器上执行ft替换,并加载FragmentThatDoesSomething来完成任务。
在FragmentThatDoesSomething中我想要一个按钮返回TabHost的Tab2并保留标签。
我使用活动在片段之间传输数据,因此在活动中我想执行一些ft事务以返回到tab2。
最简单的方法是什么?如果我使用getChildFragmentManager和Tab2的容器运行ft事务,我会遇到this problem
因为我正在使用支持v4 Fragment类。
答案 0 :(得分:0)
我会将addToBackStack(null)用于我的片段交易。然后FragmentThatDoesSomething中定义的按钮可以调用getActivity.onBackPressed()。
此时只需要确保保存状态。
// MainActivity.java
@Override
public void someCallbackMethod(Object obj1, Object obj2) {
// have MainActivity store your values and Tab2 fragment accesses data
// through callback references when Tab2.onCreateView() is called.
onBackPressed();
// OR retrieve your Tab2 fragment and manually update values here via
// some kind of accessor
}
答案 1 :(得分:0)
I chose to implement activities as handling nested fragments are a pain.
One gotcha I ran into was sending data back from FragmentThatDoesSomething (now an activity) back to Tab 2. Because Tab 2 is a nested fragment of MainFragment, I had to override onActivityResult in MainFragment to send data back to the child Tab 2. I think its because I'm using the v4 Fragment support class.
I did that using this code.
答案 2 :(得分:0)
编译'com.android.support:design:22.2.0' 我需要使用上面的材料设计库来解决您的问题。 您可以在一个viewPager中添加多个片段。
它将为您提供更多其他选择。