从CustomView更改片段TextView值

时间:2019-07-12 00:03:03

标签: android kotlin

我有2个片段:GameFragment和PostGameFragment 在GameFragment中,我有一个CustomView,得分很高。

当玩家失败时,我创建了一个onLoseListener,告诉GameFragment更改为PostGameFragment,我想在那里使用CustomView内的得分值更新TextView。

我该怎么做? 我在CustomView中尝试了textView.text = valueToUpdate,但它给了我错误:textView不能为空

这是我的PostGameFragment onCreateView方法。 在此xml片段中是我要更新的TextView。

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

    val view: View = inflater.inflate(R.layout.fragment_post_game, container, false)
    view.postGameLayout.setBackgroundResource(R.drawable.ic_postgame)

    view.button.setOnClickListener { view ->
        activity!!.supportFragmentManager
            .beginTransaction()
            .replace(R.id.fragment_holder,GameFragment.newInstance() )
            .addToBackStack(GameFragment.toString())
            .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
            .commit()
    }

    // Return the fragment view/layout
    return view

}

这是我的CustomView中的方法,该方法检查玩家是否输了(如果他输了),然后将比分加+1。 我想在玩家输球时用分数更新TextView。

fun checkLoser() {        
    if (ballInGame.posy >= height) {
        stopAnimation()
        onLoseListener.invoke()

    }else{
        score += 1
    }
}

2 个答案:

答案 0 :(得分:0)

请检查您的valueToUpdate不为空,并绑定您的textview findViewById。

答案 1 :(得分:0)

尝试

textview.setText(valueToUpdate);