Android:片段未被替换

时间:2015-10-18 13:10:43

标签: java android android-fragments

我想要做的是当我点击按钮(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'

相同

2 个答案:

答案 0 :(得分:0)

使用此

transaction.replace(R.id.fragmentPlace, replacableFragment).commit();

答案 1 :(得分:0)

我想回答我的问题!

问题是容器!

在activiy_main.xml中,片段a的容器被定义为&#39; fragment~ /&#39;。

我将其修改为&#39; FrameLayout~ /&#39;这是成功的!

谢谢!