导航到另一个片段

时间:2013-05-17 13:24:01

标签: android android-fragments

我有一个包含两个片段的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的布局如何!如果有人能帮助我,那就太好了。

3 个答案:

答案 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;

    }