底部导航视图不出现在模拟器中,仅出现在布局预览中

如何解决底部导航视图不出现在模拟器中,仅出现在布局预览中

导航底视图没有显示,尽管在预览中显示代码,但我没有看到任何错误。 一旦启动了主要活动,它就不会显示。 请注意,我正在使用启动活动中的底部导航视图启动主要活动,该活动将检查用户是否登录

这是启动活动布局文件

package io.keepcoding.androidfinalproject.ui

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import io.keepcoding.androidfinalproject.R
import io.keepcoding.androidfinalproject.ui.auth.AuthActivity
import io.keepcoding.androidfinalproject.ui.main.MainActivity

class LaunchingActivity : AppCompatActivity() {

    private var userLoggedIn: Boolean = true
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_launch)
        if(userLoggedIn){
            startAppActivity()
        } else {
            startAuthActivity()
        }
    }

    private fun startAuthActivity() {
        val intent = Intent(this,AuthActivity::class.java)
        startActivity(intent)
        finish()
    }

    private fun startAppActivity() {
        val intent = Intent(this,MainActivity::class.java)
        startActivity(intent)
        finish()
    }
}

这是未显示的启动活动布局文件,因为如果用户登录,应用程序一旦启动,就会启动主要活动。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.LaunchingActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

这是我的主要活动布局文件

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

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/navigationView"
        app:labelVisibilityMode="labeled"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/app_bar"
        app:itemIconTint="@color/white"
        app:itemTextColor="@color/bottom_nav_bar_unselected"
        app:menu="@menu/bottom_nav_menu"/>

</RelativeLayout>

这是我的主要活动代码

package io.keepcoding.androidfinalproject.ui.main

import android.os.Bundle
import android.os.PersistableBundle
import androidx.appcompat.app.ActionBar
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.replace
import com.google.android.material.bottomnavigation.BottomNavigationView
import io.keepcoding.androidfinalproject.R
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
    private lateinit var toolbar: ActionBar
    override fun onCreate(savedInstanceState: Bundle?,persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState,persistentState)
        setContentView(R.layout.activity_main)
        toolbar = supportActionBar!!
        val bottomNavigation: BottomNavigationView = navigationView
        bottomNavigation.setonNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
    }

    private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener {
        when(it.itemId) {
            R.id.navigation_products -> {
                toolbar.title = "Products"
                val productFragment = ProductsFragment.newInstance()
                openFragment(productFragment)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_map -> {
                toolbar.title = "Map"
                val mapFragment = ProductsFragment.newInstance()
                openFragment(mapFragment)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_profile -> {
                toolbar.title = "Profile"
                val profileFragment = ProductsFragment.newInstance()
                openFragment(profileFragment)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_notifications -> {
                toolbar.title = "Notifications"
                val notificationsFragment = ProductsFragment.newInstance()
                openFragment(notificationsFragment)
                return@OnNavigationItemSelectedListener true
            }
        }
        false
    }

    private fun openFragment(fragment: Fragment) {
        val transaction = supportFragmentManager.beginTransaction()
        transaction.replace(R.id.container,fragment)
        transaction.addToBackStack(null)
        transaction.commit()
    }
}

这是菜单布局文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_products"
        android:icon="@drawable/ic_products"
        android:enabled="true"
        android:title="@string/title_products" />

    <item
        android:id="@+id/navigation_map"
        android:icon="@drawable/ic_map"
        android:enabled="true"
        android:title="@string/title_map" />

    <item
        android:id="@+id/navigation_sell"
        android:icon="@drawable/ic_add"
        android:enabled="true"
        android:title="@string/title_sell"
        />

    <item
        android:id="@+id/navigation_profile"
        android:icon="@drawable/ic_profile"
        android:enabled="true"
        android:title="@string/title_profile"
        />

    <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/ic_notifications"
        android:enabled="true"
        android:title="@string/title_notifications" />

</menu>

您可以在此处找到该项目的链接

https://github.com/kcFinalProject/AndroidFinalProject/tree/master

解决方法

您的activity_main.xml是具有导航栏的那个吗?

如果是这种情况,则可能是您的问题是Frame Layour的高度为match_parent

要查看是否存在此问题,请将框架布局可见性设置为不可见

android:visibility="invisible"属性添加到FrameLayout,然后查看导航栏是否可见。

如果现在可以看到导航栏,则必须在导航栏的顶部设置FrameLayout的底部约束。向FrameLayout android:layout_above="@id/navigationView"

添加另一个属性 ,

解决了,我覆盖了错误的onCreate方法,因此从Launching活动中启动的主要活动从未真正运行过。

onCreate not called

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?