我有一个包含两个片段的FragmentActivity。例如:fragment1和fragment2。 现在fragment1有两个按钮。 我需要在fragment1中单击按钮时转到fragment3。
FragmentActivity有两个按钮和一个片段位置,我在按钮点击时替换两个片段。 这是布局。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".OnlineActionsActivity" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onSelectFragment"
android:text="fr1" />
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onSelectFragment"
android:text="fr2" />
</LinearLayout>
<LinearLayout
android:id="@+id/fragment_place"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:orientation="vertical" >
</LinearLayout>
现在我有点失去了如何实现我的目标! 因为fragment1和fragment2是一个片段而不是片段活动所以我没有getSupportFragmentManager()。
还有fragment1的布局如何!如果有人能帮助我,那就太好了。
答案 0 :(得分:0)
你应该参考这个链接: Here
一定会帮到你..
答案 1 :(得分:0)
片段具有方法getFragmentManager()
,您可以使用它在片段内部进行片段事务。
答案 2 :(得分:0)
您可以通过在Fragment1中编写几行代码来更新片段。
Fragment1的布局将包含简单按钮,您应该在此按钮上设置onclicklistener并在onClick()方法中编写此代码。
final Activity a = getActivity();
if (a instanceof YourFragmentActivity) {
final YourFragmentActivity activity = (YourFragmentActivity) a;
activity.updateContent(Fragment3.class.getSimpleName());
}
,这是FragmentActivity中的updateContent方法:
public void updateContent(String tag) {
menulist = (ListView) findViewById(R.id.listView);
Fragment fragment=null;
final FragmentManager fm = getSupportFragmentManager();
final FragmentTransaction tr = fm.beginTransaction();
if (currentContentFragmentTag != null) {
final Fragment currentFragment = fm.findFragmentByTag(currentContentFragmentTag);
if (currentFragment != null)
tr.hide(currentFragment);
}
if (tag.equals(Fragment1.class.getSimpleName())) {
final Fragment foundFragment = fm.findFragmentByTag(tag);
if (foundFragment != null) {
fragment = foundFragment;
}
else {
fragment = new Fragment1();
}
} else if (tag.equals(Fragment2.class.getSimpleName())) {
final Fragment foundFragment = fm.findFragmentByTag(tag);
if (foundFragment != null) {
fragment = foundFragment;
}
else {
fragment = new Fragment2();
}
} else if (tag.equals(Fragment3.class.getSimpleName())) {
final Fragment foundFragment = fm.findFragmentByTag(tag);
if (foundFragment != null) {
fragment = foundFragment;
}
else {
fragment = new Fragment3();
}
} else {
return;
}
if (fragment.isAdded()) {
tr.show(fragment);
}
else {
tr.add(R.id.fragment_place, fragment, tag);
}
tr.commit();
currentContentFragmentTag = tag;
ApiConstants.currentFragmentTag = tag;
}