2015-11-24 3 views
0

Я внедрил следующий макет, который является домашней страницей. Также есть меню навигации.Заменить фрагмент на MainPage

Мой вопрос: когда пользователь нажимает на боковое меню (ящик навигации), я ожидаю, что текущая домашняя страница должна быть заменена выбранным фрагментом. Однако в моей текущей реализации я все еще могу видеть изображение домашней страницы и текстовое изображение вместе с моим выделенным фрагментом textview.

main.xml

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<!-- The first child in the layout is for the main Activity UI--> 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    android:background="#ffffffff" 
    android:id="@+id/content_frame"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:text="Holy Operating Systems, Batdroid!" 
     android:textSize="24sp" 
     android:gravity="center" 
     android:layout_marginTop="100dp"/> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/blue" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true"/> 

</RelativeLayout> 

<!-- Side navigation drawer UI --> 
<ListView 
    android:id="@+id/navList" 
    android:layout_width="200dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="left|start" 
    android:background="#ffeeeeee"/> 

</android.support.v4.widget.DrawerLayout> 

Main.java

private void addDrawerItems() { 
     String[] osArray = {"Login or SignUp","Post New Offer", "Home" }; 
     mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, osArray); 
     mDrawerList.setAdapter(mAdapter); 
     mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Fragment newFragment; 
       FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
       switch (position){ 
        case 0: 
         newFragment = new Login(); 
         transaction.replace(R.id.content_frame, newFragment); 
         transaction.addToBackStack(null); 
         transaction.commit(); 
         break; 

        case 1: 
         newFragment = new PostNewOffer(); 
         transaction.replace(R.id.content_frame, newFragment); 
         transaction.addToBackStack(null); 
         transaction.commit(); 
         break; 

        case 2: 
         newFragment = new TabFragment3(); 
         transaction.replace(R.id.content_frame, newFragment); 
         transaction.addToBackStack(null); 
         transaction.commit(); 
         break; 
       } 
       mDrawerLayout.closeDrawer(mDrawerList); 
      } 
     }); 
     } 

Вот мой FragmentLayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:text="Login" 
     android:textAppearance="?android:attr/textAppearanceLarge"/> 

</RelativeLayout> 

ответ

0

content_fram e должен быть пустым, как FrameLayout. Вы можете изменить расположение, как это:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    android:background="#ffffffff"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:text="Holy Operating Systems, Batdroid!" 
     android:textSize="24sp" 
     android:gravity="center" 
     android:layout_marginTop="100dp"/> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/blue" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true"/> 
    <!-- the fragment holder --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</RelativeLayout> 
+0

Это все равно, ничего не изменилось. – hotspring

+0

можете ли вы добавить макет фрагмента в свой вопрос? –

+0

Я добавил. Пожалуйста, см. Обновление – hotspring

0

Я рекомендую закомментируйте строку:

transaction.addToBackStack(null); 

и заменить эту строку в представлении списка теге:

android:layout_gravity="left|start" 

с:

android:gravity="left|start" 
+0

тоже не работает – hotspring

+0

попробуйте использовать android.support.v4.Fragment & android.support.v7.AppCompatActivity & getSupportFragmentManager() метод –

+0

Я использую их уже. – hotspring

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