在学习片段时,我尝试制作一个简单的程序,在按钮点击时可以更改活动中的片段。虽然我的程序编译没有错误,但我无法在按钮单击时更改FrameLayout中的片段。有关如何通过单击按钮更改当前片段的任何建议吗?
这是我在MainActivity类中的逻辑:默认情况下,onCreate方法用fragment1的片段替换FrameLayout。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//You use the FragmentManager to replace the container with an fragment.
//Get fragment manager
FragmentManager fm = getSupportFragmentManager();
//add
FragmentTransaction ft = fm.beginTransaction();
fragment1 frag1 = new fragment1();
ft.add(R.id.fragment_container, frag1);
//commit change
ft.commit();
}
我有两个按钮,它们应该用它们各自的片段替换当前片段(get fragment1用fragment1替换当前片段,get fragment2用fragment2替换当前片段):
public void getfragment1(View view){
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_container,new fragment1());
}
public void getfragment2(View view){
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_container,new fragment2());
}
以下是MainActivity类的基本XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open Fragment1"
android:onClick="getfragment1"
android:id="@+id/button"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="getfragment2"
android:text="Open Fragment2"
android:id="@+id/button2"/>
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
</LinearLayout>
答案 0 :(得分:1)
如果我没弄错,你只是忘了提交片段交易。
尝试添加
ft.commit();
之后
ft.replace(R.id.fragment_container,new fragment2());