Не здесь или в вашем другом вопросе вы предоставили достаточно информации о почему вы can't do that
. Нет причин рисовать на новом холсте вместо уже существующего.
Код не работает, потому что ваш новый Canvas c
никому не назначен. Это все равно что создать строку myString
для журнала, но никогда не использовать Log.d(tag, myString)
edit (после прочтения всех комментариев)
Если вы вычислили значение в вашем onCreate () и хотите отобразить это значение в вашем onDraw (), это просто сделайте это. Сохраните результат в переменной-члене, и вы можете получить к нему доступ в onDraw ().
В противном случае: укажите полный код. Я думаю, вы просто делаете это более сложным, чем это должно быть ...
edit2
Ваш код немного запутан и делает много вещей в тех областях, где вы не должны этого делать. Таким образом, рисование внутри onProgressUpdate()
серьезно неправильно. Вы должны инкапсулировать свой расчет и чертеж.
Что вы должны сделать (во всяком случае, я рекомендую использовать SurfaceView вместо View ...):
Вы должны запустить AsynchTask, который обновляет строку, которую вы хотите нарисовать. Строка должна быть переменной внутри вашего View, где вы используете ее для рисования.
Сам рисунок должен вызываться потоком рисования (я помню: используйте SurfaceView вместо View в качестве родительского класса). Внутри этого onDraw () вы должны просто использовать свой объект рисования, заданный холст и строку, которую хотите нарисовать (не забудьте сделать переменную paint
также переменной-членом, чтобы предотвратить повторное создание одного и того же объекта снова и снова для производительность / память).
Если вы не знаете, как работать с SurfaceView, или если вы хотите узнать, как вы можете работать с потоком рисунков, пожалуйста, прочитайте мое руководство по рисованию 2D: www.droidnova.com/2d-tutorial-series
Короткое последнее предложение: вы сделали много вещей правильно, вы просто перепутали с местами, где вы делаете это. Вы должны попытаться переосмыслить то, чего вы действительно хотите достичь, и как это можно сделать самым простым способом. Может быть, мой урок поможет немного очистить ваш разум.