Динамически добавленное представление не вызывает onDraw после invalidate () - PullRequest
0 голосов
/ 23 апреля 2020

Когда я программно добавил MyView и позвонил myView.invalidate(), onDraw не вызывается по требованию. Но когда я ставлю его прямо на R.layout.activity_main, он работает без проблем.

На моей активности

val myView: MyView
    get() = MyView(this)

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    setContentView(R.layout.activity_main)
    container.addView(myView)
}

MyView

class MyView : View{
    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet) : super(context, attrs)

    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)
        Log.e("MyView","onDraw")
    }
}

1 Ответ

0 голосов
/ 23 апреля 2020

О, я вижу, это проблема

val myView: MyView
   get() = MyView(this)

Это создаст новый экземпляр MyView каждый раз, когда я использую переменную myView

Так я делаю это так , теперь это работает.

    lateinit var myView: MyView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        myView = MyView(this)

        setContentView(R.layout.activity_graph)
        container.addView(myView)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...