Базовый фрагмент навигации для нескольких фрагментов - PullRequest
0 голосов
/ 05 октября 2018

Можно ли создать Navigation Fragment, чтобы он содержал мою логику нажатия кнопки навигации назад.

Несколько фрагментов, которые имеют кнопку "Назад", смогут потом наследоваться от Navigation Fragment.

Я новичок в разработке Kotlin.Как вы видите ниже, SigninFragment раздувает представление, я не уверен, как получить ссылку на кнопку просмотра и возврата в родительском Navigation Fragment

class SigninFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        val view = inflater.inflate(R.layout.fragment_signin, container, false)

        // Navigation back button logic
        var headerBackButton = view.findViewById<ImageButton>(R.id.headerBackButton)
        headerBackButton.setOnClickListener {
            val navController = NavHostFragment.findNavController(this@SignInFragment)
            navController.navigateUp()
        }

        return view
    }
}

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я не уверен, правильно ли я понял вашу проблему, но может ли это быть уловкой?

open class NavigationFragment() : Fragment() {

    fun asignNavigationBackClickListener(backButton: View) {
        backButton.setOnClickListener {
            val navController = NavHostFragment.findNavController(this@NavigationFragment)
            navController.navigateUp()
        }
    }
}

class SigninFragment : NavigationFragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.fragment_signin, container, false)
        asignNavigationBackClickListener(view.findViewById(R.id.headerBackButton))
        return view
    }
}
0 голосов
/ 05 октября 2018

Я думаю, что вы можете использовать этот код для возврата к предыдущему занятию:

headerBackButton.setOnClickListener {
    finish()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...