0

我有一个包含两个片段的 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是一个fragment而不是一个fragmentactivity所以我没有getSupportFragmentManager()。

还有 fragment1 的布局会是什么样子!!如果有人可以帮助我,那就太好了。

4

2 回答 2

0

您可以通过在 Fragment1 中编写几行代码来从 Fragment 更新您的 Fragment。

您的 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;

    }
于 2013-05-17T13:35:59.177 回答
0

片段具有getFragmentManager()可用于在片段内部进行片段事务的方法。

于 2013-05-17T13:31:16.010 回答