底部导航视图在默认片段Android Studio中不可见

时间:2017-08-13 14:47:03

标签: android bottomnavigationview

我的底部导航栏在我的默认启动片段SearchFragment中不可见。如果我将开始片段更改为另一个,例如MoreFragment,它出现在其他所有内容上,除了SearchFragment,这是我理想的开始片段。

这是我的代码:

Main.java

import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.MenuItem;



public class Main extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (savedInstanceState == null) {
           getSupportFragmentManager().beginTransaction().replace(R.id.activity_main, new SearchFragment()).commit();
    }

    BottomNavigationView bottomNavigation = (BottomNavigationView) findViewById(R.id.bottom_navigation);

    bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {

        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch(item.getItemId()){
                case R.id.seach_tab:
                   SearchFragment sf=new SearchFragment();
                    FragmentManager fragmentmanager1=getSupportFragmentManager();
                    fragmentmanager1.beginTransaction()
                            .replace(R.id.activity_main, sf)
                            .commit();
                    break;


                case R.id.bookings_tab:
                    BookingsFragment bf=new BookingsFragment();
                    FragmentManager fragmentmanager2=getSupportFragmentManager();
                    fragmentmanager2.beginTransaction()
                            .replace(R.id.activity_main, bf)
                            .commit();
                    break;

                case R.id.account_tab:
                    ProfileFragment pf=new ProfileFragment();
                    FragmentManager fragmentmanager3=getSupportFragmentManager();
                    fragmentmanager3.beginTransaction()
                            .replace(R.id.activity_main, pf)
                            .commit();
                    break;

                case R.id.more_tab:
                   MoreFragment mf=new MoreFragment();
                    FragmentManager fragmentmanager4=getSupportFragmentManager();
                    fragmentmanager4.beginTransaction()
                            .replace(R.id.activity_main, mf)
                            .commit();
                    break;

            }
return false;
        }


    });
}
}

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:id="@+id/activity_main"
android:layout_height="match_parent"
android:background="@color/white">

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/white"
        android:layout_gravity="bottom"
        app:itemIconTint="@drawable/tab_bar"
        app:itemTextColor="@drawable/tab_bar"
        app:menu="@menu/bottombarmenu" />

</FrameLayout>

bottombarmenu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:title="Search"
    android:enabled="true"
    android:id="@+id/seach_tab"
    android:icon="@drawable/icon_search"
    app:showAsAction="ifRoom|withText"
    >

</item>

<item
    android:id="@+id/bookings_tab"
    android:enabled="false"
    android:icon="@drawable/icon_bookings"
    android:title="My bookings"></item>

<item
    android:title="Profile"
    android:enabled="false"
    android:id="@+id/account_tab"
    android:icon="@drawable/icon_account"
    app:showAsAction="ifRoom|withText">
</item>

<item
    android:id="@+id/more_tab"
    android:enabled="false"
    android:icon="@drawable/icon_more"
    android:title="More"
    app:showAsAction="ifRoom|withText"></item>

</menu>

2 个答案:

答案 0 :(得分:5)

您正在替换整个视图,因此您可以尝试这样的布局,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <FrameLayout
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">



    </FrameLayout>

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:itemBackground="@color/white"
        android:layout_gravity="bottom"
        app:itemIconTint="@drawable/tab_bar"
        app:itemTextColor="@drawable/tab_bar"
        app:menu="@menu/bottombarmenu"/>

</LinearLayout>

答案 1 :(得分:0)

public class Main extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
           getSupportFragmentManager().beginTransaction().replace(R.id.activity_main, new SearchFragment()).commit();

    BottomNavigationView bottomNavigation = (BottomNavigationView) findViewById(R.id.bottom_navigation);

    bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {

        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch(item.getItemId()){
                case R.id.seach_tab:
                   SearchFragment sf=new SearchFragment();
                    FragmentManager fragmentmanager1=getSupportFragmentManager();
                    fragmentmanager1.beginTransaction()
                            .replace(R.id.activity_main, sf)
                            .commit();
                    break;


                case R.id.bookings_tab:
                    BookingsFragment bf=new BookingsFragment();
                    FragmentManager fragmentmanager2=getSupportFragmentManager();
                    fragmentmanager2.beginTransaction()
                            .replace(R.id.activity_main, bf)
                            .commit();
                    break;

                case R.id.account_tab:
                    ProfileFragment pf=new ProfileFragment();
                    FragmentManager fragmentmanager3=getSupportFragmentManager();
                    fragmentmanager3.beginTransaction()
                            .replace(R.id.activity_main, pf)
                            .commit();
                    break;

                case R.id.more_tab:
                   MoreFragment mf=new MoreFragment();
                    FragmentManager fragmentmanager4=getSupportFragmentManager();
                    fragmentmanager4.beginTransaction()
                            .replace(R.id.activity_main, mf)
                            .commit();
                    break;

            }
return false;
        }


    });
}
}

注意:如果状态为null,则保存的实例将加载,但在您的情况下,它不为null,因此它不会加载...但如果您希望它作为默认值,则排除if语句