Android Kotlin Фрагмент Панель действий Название - PullRequest
0 голосов
/ 21 мая 2018
  • Вопрос 1) Как установить заголовок панели действий во Фрагменте?
  • Вопрос 2) В чем проблема моего кода?

MainActivity.kt

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

//        Action Bar
        val actionBar = supportActionBar
        actionBar!!.setDisplayShowHomeEnabled(true)
        actionBar.setBackgroundDrawable(ColorDrawable(Color.parseColor("#00FFFFFF")))
        actionBar.setIcon(R.drawable.title)
        actionBar.setDisplayShowTitleEnabled(false)

        createQponFragment()
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
    }

Fragment.kt

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        setHasOptionsMenu(true)


        val actionBar = (activity as MainActivity).supportActionBar

        actionBar!!.setDisplayShowTitleEnabled(true)
        actionBar!!.setTitle("Tutorial")

        return inflater.inflate(R.layout.fragment_me, container, false)
    }

Симулятор показывает, что у моей страницы фрагмента вообще нет заголовка!

enter image description here

1 Ответ

0 голосов
/ 21 мая 2018

Попробуйте этот код сделать один метод в основной деятельности, чтобы обновить панель инструментов, как показано ниже кода ..

fun updateToolbar(){

   when(FragmentController.getFrontFragmentTag(this)){
         FragmentController.EXAM_FRAGMENT->{
            mIndexMenu= INDEX_ADD
            updateToolbarTitle("Exam")
        }

    }
}

и создать отдельный класс для добавления фрагмента во всех других методах, таких как FragmentControl.kt.

       fun getFrontFragmentTag(activity: FragmentActivity?): String? {
        return activity?.supportFragmentManager?.findFragmentById(if (activity is Main2Activity) MAIN_ROOT else LOGIN_ROOT)?.tag
    }
        fun AppCompatActivity.addExamFragment(): Fragment {
        mFragment = ExamFragment()
        this.supportFragmentManager?.beginTransaction()?.replace(if (this is LoginActivity) LOGIN_ROOT else MAIN_ROOT, mFragment, EXAM_FRAGMENT)?.commit()
        return mFragment as ExamFragment
    }

и в вызове основного действия ниже кода добавьте фрагмент ..

                addExamFragment()

и в файле examFragment в вызове метода onCreate ниже кода для обновления панели инструментов.

 (activity as Main2Activity).updateToolbar()
...