改变片段动态

时间:2014-04-24 17:43:09

标签: android android-fragments fragment fragmentmanager

我有2个问题。首先,我可以说一个人,为什么这不起作用?我只是试图改变片段,但他什么也没做。我只看到第一个片段。

mainActivity:

...
if (savedInstanceState == null) {
        fm.beginTransaction()
                .add(R.id.firstFragment, new firstFragment()).commit(); 
    }

    findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            switchFragment(R.id.firstFragment, new firstFragment());
        }
    });

    findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            switchFragment(R.id.secondFragment, new secondFragment());
        }
    });

}

private void switchFragment(int fragId, Fragment frag){
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
     ft.replace(fragId, frag);
     ft.commit();
}

main.xml中的碎片:

<Fragment
    android:id="@+id/firstFragment"
    android:name="com.example.firstFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/View01"
    android:layout_below="@+id/view1" />

Fragmentclass就是这样:

    @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_clublist, container, false);

    return view;
  }

片段看起来像这样:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Fragment1"
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#FFFF0000"/>

我不知道,他为什么不改变片段。检查,switchFragment真正调用是真的。

第二个问题是:这是改变片段的好方法吗?是什么,如果我有10个片段?

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:1)

int fragId

应该是托管Fragment的容器的id,而不是片段本身的id