请求帮助做这些步骤: 我在主活动上有一个相对布局
<RelativeLayout
android:id="@+id/main_framelayout_small_contain"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
1.当活动开始时,它会将RelativeLayout替换为片段(f1)
2.(f1)有用户点击时的列表视图我必须显示另一个片段(f2) 在f1的地方所以我在MainActivity中使用这些方法
public void set_fragment_subject(String path)
{
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft= fragmentManager.beginTransaction();
Fragment_subjects f1 = new Fragment_subjects(path);
Fragment_season f2 = new Fragment_season();
ft.add(R.id.main_framelayout_small_contain,f1);
ft.hide(f2);
ft.commit();
}
可能它看起来很奇怪,但我在搜索后这样做,因为我想按回按钮时保留f1的数据。
问题出现当用户点击f1时,活动显示f2但超过f1。
很抱歉花了很长时间,任何人都可以帮忙做我想要的事,谢谢
答案 0 :(得分:0)
您需要使用新片段替换当前片段。 这可以通过以下代码来完成。
Fragment fragmentSeason = new Fragment_season();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack if needed
transaction.replace(R.id.main_framelayout_small_contain, fragmentSeason);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
在按下后,您将获得第一个片段。
答案 1 :(得分:0)
你好@Ghadeer在这里你可以访问片段作为拖曳方式一个是正常替换旧片段而另一个是维护后台堆栈,但我认为你需要第二种方式,因为你想先将数据片段化为,所以请按照以下这样做的步骤,
请采用框架布局而不是相对布局
<FrameLayout
android:layout_width="match_parent"
android:id="@+id/main_framelayout_small_contain"
android:layout_height="match_parent"></FrameLayout>
在这里,我创建了我们将在代码中使用的tow方法,以便放入您开始片段的活动中:
public void setFragment(Fragment fragment, int container) {
getSupportFragmentManager().beginTransaction().add(container, fragment).addToBackStack(fragment.getClass().getName()).commit();
}
public void popAllFragments() {
// TODO Auto-generated method stub
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
启动第一个片段时请添加以下代码:
popAllFragments();
Fragment_subjects f1 =new Fragment_subjects();
setFragment(f1,R.id.main_framelayout_small_contain);
启动第二个framgnet时添加以下代码:
Fragment_season f2 =new Fragment_season();
setFragment(f1,R.id.main_framelayout_small_contain);
然后在你的后退按钮后写下面的代码:
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
getActivity().onBackPressed();
试试这可能对你有用
答案 2 :(得分:0)
方法set_fragment_subject
中存在一些实现问题如果你在Fragment_1中声明了set_fragment_subject方法,那么你在方法中的代码应该是这样的,
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft= fragmentManager.beginTransaction();
final Fragment_season f2 = new Fragment_season();
ft.add(R.id.main_framelayout_small_contain,f2);
ft.hide(this);// Here this means the current fragment because this method is declared in Fragment_1
ft.addToBackStack(null);
ft.commit();