Мне нужно знать, как вызывать ProgressBar (или любую другую кнопку) в классе, вне метода "onCreate".Я видел в Java, что я могу сделать это, вызывая findViewById (), но в Kotlin от него избавились.Например, я пробовал что-то вроде этого:
var myProgressBar = findViewById(R.id.myProgressBar) as ProgressBar
Но это дает мне неразрешенную ссылку для метода поиска.
Заранее спасибо за помощь
______________ ОБНОВЛЕНИЕ ________________
Вот мой пользовательский класс DownloadManager
class DownloadSoundController(context: Context): Activity() {
val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
.....
.....
Thread(Runnable{
while (starter) {
var query = DownloadManager.Query()
query.setFilterById(refid)
var c = downloadManager.query(query)
if (c.moveToFirst()) {
var totalSizeIndex = c.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)
var downloadedIndex = c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)
val fileSize = c.getLong(c.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES))
var totalSize = c.getInt(totalSizeIndex)
var downloaded = c.getInt(downloadedIndex)
var progress = 0.0
var raffronto: Long = -1
if (fileSize != raffronto) {
progress = downloaded * 100.0 / totalSize
//println("myTag - downloaded % :$progress, downloaded var: $downloaded")
myProgressBar.progress = progress.toInt()
if (progress == 100.0) {
starter = false
}
} else {
//println("myTag - downloaded = 100 progress: $progress, $downloaded")
myProgressBar.progress = progress.toInt()
if (progress == 100.0) {
starter = false
}
}
}
}
}).start()
Вот мой манифест:
<application
android:hardwareAccelerated="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="com.journeyapps.barcodescanner.CaptureActivity"
android:screenOrientation="fullSensor"
tools:replace="screenOrientation" />
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
//ATTENTION
<activity android:name="com.example.myapplication.DownloadSoundController"/>
// here it returns ERROR, on default constructor
<receiver android:name=".DownloadBroadcastManager">
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
</intent-filter>
</receiver>
</application>
_________ UPDATE_2 __________
Я обработал код и обнаружил несколько проблем, которыезвучит очень "странно" для меня:
1) чтобы остановить исключение нулевой точки относительно значения myProgressBar.progress =, я обнаружил, что должен инициализировать myProgressBar.progress = 0
2) с println() моя нить втирается в журнал точно, шаг за шагом, количество загруженных файлов, но если я добавлю myProgressBar.progress = progress.toInt () (прогресс - это то же самое, что я проштампую в println ()!)в теме ... он начинает работать асинхронно так, как ДАЖЕ НАЧИНАЕТСЯ ПЕРЕД началом загрузки .. что приводит к нескольким ошибкам и множественным загрузкам "
союзник не знает, что происходит