одно и то же свойство и метод возвращают разные значения - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть следующий фрагмент кода:

   override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val view=inflater.inflate(R.layout.fragment_tab_packs,container,false)
        view.doOnLayout {
            val f1=isRemoving         //false
            val f2=context==null      //false
            val f3=activity == null   //false
            val f4=isDetached         //false
            val f5=!isAdded           //false
            val f6= this.view == null //false
            val safe1=isSafe          //false
            val safe2=isSafe()        //true(!!!)
            if(isSafe) {
                init()
            }
        }
        return view
    }

    private val isSafe: Boolean=!(isRemoving || context==null || activity == null || isDetached || !isAdded || view == null)

    private fun isSafe(): Boolean=!(isRemoving || context==null || activity == null || isDetached || !isAdded || view == null)

Я получил значения в комментариях от отладчика. isSafe и isSafe() содержит идентичную логику. Как они могут возвращать разные значения?

1 Ответ

2 голосов
/ 29 сентября 2019

Поскольку выражение, присвоенное isSafe, вычисляется при создании экземпляра фрагмента и остается неизменным после этого, тогда как возвращаемое значение isSafe() вычисляется заново каждый раз, когда его вызывают.

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