2015-10-18 106 views
0

我想要做的是,当我点击一个按钮(BtnA或BtnB)时,按钮下面的片段被替换为相应的片段(FragmentA或FragmentB)。Android:片段不被替换

这是我在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,容器,假);”

当我点击任何按钮时,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' 这

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

回答

0

使用!

问题是容器!

在activiy_main.xml中,片段a的容器定义为'fragment〜/'。

我把它解决为'FrameLayout〜/',它是成功的!

谢谢!

+0

谢谢你的回答,但它不工作,我可以期待它,因为这并不意味着和改变什么...... – LKM

+1

我认为你应该使用片段容器insted片段的布局。 –

+0

有没有叫做'Fragment Container'的东西?我不这么认为...不是吗?我不明白你的意思是 – LKM

0

我想雁我的问题