我想要做的是当我点击按钮(BtnA或BtnB)时,按钮下方的片段被相应的片段(FragmentA或FragmentB)替换。
这是我在MainActivity.java中的代码
@Override
public void onClick(View v) {
Fragment replacableFragment = new Fragment();
switch (v.getId()){
case R.id.button1:
{
replacableFragment = new Fragment_One();
Log.d("OnClick","button1");
break;
}
case R.id.button2:
{
replacableFragment = new Fragment_Two();
Log.d("OnClick","button2");
break;
}
}
FragmentManager manager= getFragmentManager();
Log.d("OnClick","1");
FragmentTransaction transaction = manager.beginTransaction();
Log.d("OnClick","2");
transaction.add(R.id.fragmentPlace, replacableFragment);
//transaction.addToBackStack(null);
Log.d("OnClick","3");
transaction.commit();
}
这是我的Fragment_One.java代码
public class Fragment_One extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_one,container,false);
}
}
Fragment_Two.java与'inflater.inflater(R.layout.fragment_two,container,false)相同;'
当我点击任何按钮时,logcat会完全显示所有内容。但片段根本没有被取代。 我认为我的代码没有问题。
任何人都可以知道吗?
我项目的xml文件如下:
activity_main.xml中
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="FRAGMENT ONE"
android:id="@+id/button1"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="FRAGMENT TWO"
android:id="@+id/button2"/>
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragmentPlace"
android:name="lkm.com.practical5_3.Fragment_One"/>
fragment_one.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:background="@android:color/holo_orange_dark"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="THIS IS FRAGMENT ONE"
android:id="@+id/text1"/>
</LinearLayout>
fragment_two.xml
与'fragment_one.xml'
相同答案 0 :(得分:0)
使用此
transaction.replace(R.id.fragmentPlace, replacableFragment).commit();
答案 1 :(得分:0)
我想回答我的问题!
问题是容器!
在activiy_main.xml中,片段a的容器被定义为&#39; fragment~ /&#39;。
我将其修改为&#39; FrameLayout~ /&#39;这是成功的!
谢谢!