首页 > 解决方案 > kotlin android 动作栏标题

问题描述

MainActivity 中的以下函数,App 名称为 Qpon。该应用程序运行良好,只有第一页的操作栏标题有问题。它应该为栏标题显示“fff”,但它在应用程序启动时显示应用程序名称“Qpon”。但是当我转到其他片段并返回第一个片段时,它会正确显示。

private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
        when (item.itemId) {
            R.id.navigation_qpon -> {
                //message.setText(R.string.title_qpon)
                actionBarIcon(R.drawable.ic_title_black)
                createQponFragment()

                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_me-> {
                //message.setText(R.string.title_me)
                actionBarIcon(R.drawable.logged)
                createMeFragment()
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_tool -> {
                //message.setText(R.string.title_tool)
                actionBarIcon(R.drawable.logged)
                createToolFragment()
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_tutorial -> {
                //message.setText(R.string.title_tutorial)
                actionBarIcon(R.drawable.tutorial)
                createTutorialFragment()
                return@OnNavigationItemSelectedListener true
            }
        }
        false
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Obtain the FirebaseAnalytics instance.
        mFirebaseAnalytics = FirebaseAnalytics.getInstance(this)

        actionBarIcon(R.drawable.ic_title_black)

        createQponFragment()
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
    }


    fun getCurrentNumber():String {
        var mAuth: FirebaseAuth? = null
        mAuth = FirebaseAuth.getInstance()
        val cUser = mAuth?.currentUser
        val userPhone = cUser?.phoneNumber
        if (userPhone != null) {
            return userPhone.toString()
        }
        else { return "" }
    }

    fun actionBarIcon(imageName:Int) {

        setSupportActionBar(findViewById(R.id.my_toolbar))
        my_toolbar.setLogo(imageName)

        if (imageName == R.drawable.ic_title_black) my_toolbar.setTitle("fff")
        if (imageName == R.drawable.logged) my_toolbar.setTitle(getCurrentNumber())
        if (imageName == R.drawable.tutorial) my_toolbar.setTitle("Tutorial")
    }

应用启动图片 在此处输入图像描述

从其他片段回来 在此处输入图像描述

标签: androidkotlinandroid-actionbar

解决方案


 fun actionBarIcon(imageName:Int) {

        setSupportActionBar(findViewById(R.id.my_toolbar))
        my_toolbar.setLogo(imageName)

/* 
What is to be done to solve the issue:-
Below code is setting up title to fff if only the condition is met. but there you have not set any title if condition is not met so by default it is picking up app name.
So, give a default value when activity is visible. Either provide title to toolbar in layout or use  

// Set toolbar title/app title
        my_toolbar!!.title = "fff"
 */

        if (imageName == R.drawable.ic_title_black) my_toolbar.setTitle("fff")
        if (imageName == R.drawable.logged) my_toolbar.setTitle(getCurrentNumber())
        if (imageName == R.drawable.tutorial) my_toolbar.setTitle("Tutorial")
    }

您可以查看代码中的注释或参考以下链接,例如访问https://android--code.blogspot.com/2018/02/android-kotlin-toolbar-example.html


推荐阅读