Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Hiển thị Toast từ Thread trong Android bằng Kotlin

Giới thiệu

Ví dụ này minh họa cách hiển thị thông báo Toast từ một Thread nền (background thread) trong ứng dụng Android sử dụng Kotlin.

Các bước thực hiện

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project, điền đầy đủ thông tin cần thiết để tạo dự án mới.

Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginTop="100dp"
        android:text="Tutorials Point"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="32sp"
        android:textStyle="bold" />

</RelativeLayout>

Bước 3: Viết code logic (src/MainActivity.kt)

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var toast: Toast
    private lateinit var thread: Thread

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        // Khởi tạo Toast
        toast = Toast.makeText(this, "This is a toast from Thread", Toast.LENGTH_SHORT)

        // Tạo và chạy Thread nền
        thread = Thread(Runnable {
            for (i in 0..999) {
                try {
                    Thread.sleep(1000)
                    // Hiển thị Toast trên luồng UI
                    runOnUiThread { toast.show() }
                    Thread.sleep(1000)
                } catch (e: InterruptedException) {
                    e.printStackTrace()
                }
            }
        })
        thread.start()
    }
}

Lưu ý quan trọng: Toast phải được hiển thị trên luồng UI chính. Sử dụng runOnUiThread { toast.show() } hoặc Handler(Looper.getMainLooper()).post { toast.show() } để tránh crash.

Bước 4: Cấu hình AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.q11">

    <application
        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=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

Chạy ứng dụng

Kết nối thiết bị Android thật với máy tính, nhấn biểu tượng Run trên thanh công cụ, chọn thiết bị và quan sát màn hình thiết bị hiển thị Toast định kỳ.