0

Я новый с фрагментами, и я стараюсь их использовать. Мой XML от деятельности:Фрагменты внутри LinearLayout - Android

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/container" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".Loguin" 
tools:ignore="MergeRootFrame"> 

    <Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Fragment Test" 
    android:id="@+id/btn_FragmentTest" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginTop="20dp" 
    android:layout_marginBottom="0dp" /> 

    <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="horizontal" 
    android:id="@+id/frgContainer" 
    android:layout_marginTop="20dp"> 

    <fragment 
     android:id="@+id/frgLoguin" 
     android:layout_marginTop="20dp" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:name="habitatprojects.hubbuildings.Loguin$PlaceholderFragment" 
     tools:layout="@layout/fragment_loguin" /> 

    </LinearLayout> 



</LinearLayout> 

И я хочу, чтобы изменить фрагмент внутри LinearLayout, мой класс mainActivity является:

public class Loguin extends Activity { 

private int num = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_loguin); 
    if (savedInstanceState == null) { 
     getFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()) 
       .commit(); 
    } 

    Button btnBoton1 = (Button)findViewById(R.id.btn_FragmentTest); 

    btnBoton1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View arg0) 
     { 
      FragmentManager fragmentManager = getFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

      if(num==0) 
      { 
       fragmentTransaction.replace(R.id.frgContainer, new PlaceholderFragment()) 
         .commit(); 

       num++; 
      } 
      else{ 
       if(num==1) 
       { 
        fragmentTransaction.replace(R.id.frgContainer, new PlaceholderFragment2()) 
          .commit(); 

        num++; 
       } 
       else{ 
        fragmentTransaction.replace(R.id.frgContainer, new PlaceholderFragment3()) 
          .commit(); 

        num = 0; 
       } 
      } 
     } 
    }); 
} 

И мои PlaceHolderFunctions являются:

public static class PlaceholderFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_loguin, container, false); 
    } 
} 

public static class PlaceholderFragment2 extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_blank, container, false); 
    } 
} 

public static class PlaceholderFragment3 extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_blank2, container, false); 
    } 
} 

Почему не работает, когда я нажимаю кнопку? Что я делаю плохо? Рад за мой английский и спасибо заранее!

PD: Если вам нужно больше кода или информации, сообщите мне, спасибо!

PD1: Когда я отладки с моим устройством журнал кот просто сказать мне:

11-18 11: 33: 30.775 6065-6065/habitatprojects.hubbuildings I/ViewRootImpl: ViewRoot Касание события: сенсорный Вниз 11-18 11: 33: 30.835 6065-6065/habitatprojects.hubbuildings I/ViewRootImpl: ViewRoot в касания события: подправить

+1

Каково поведение, с которым вы закончили, и что вы получаете? Если вы получите исключение, добавьте logcat формы трассировки стека. – Simulant

+0

Спасибо, simulant, что у меня есть мой LogCat в сообщении сейчас! Нет ошибок ...: D –

ответ

0

решаемые мне просто нужно изменить LinearLayout для FrameLayout! Спасибо за все!

+0

не может LinearLayout быть контейнером? – cgr

+0

Конечно, но тогда вы FragmentTransaction.add() к нему. – Erik

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