2015-10-18 3 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'

ответ

0

использовать этот

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

Спасибо за ответ, но он не работает, и я мог ожидать его, потому что это ничего не значит и ничего не меняет ... – LKM

+1

Я думаю, вы должны использовать макет для фрагмента контейнера insted фрагмента. –

+0

Есть ли что-то под названием «Fragment Container»? Я так не думаю ... не так ли? Я не понимаю, что вы имеете в виду – LKM

0

Я хочу AnSer мой вопрос!

Проблема была в контейнере!

В activiy_main.xml контейнер фрагмента ais определяется как «фрагмент ~ /».

Я исправлю это как «FrameLayout ~ /», и это было успешно!

Спасибо!

Смежные вопросы