কম্পিউটার টিউটোরিয়াল

কোটলিন ব্যবহার করে অ্যান্ড্রয়েড এক্টিভিটি রিস্টার্ট করা

ওভারভিউ

এই টিউটোরিয়ালটি দেখাবে কিভাবে কোটলিনে একটি এক্টিভিটি প্রোগ্রাম্যাটিক্যালি রিস্টার্ট (Restart) করা যায়। এতে বর্তমান ইন্টেন্ট ব্যবহার করে এক্টিভিটি ফিনিশ করে নতুন করে স্টার্ট করা হয়।

পূর্বশর্ত

  • অ্যান্ড্রয়েড স্টুডিও (কোটলিন)
  • এক্টিভিটি লাইফসাইকেল বেসিক জ্ঞান

ধাপ ১: প্রজেক্ট তৈরি করুন

File → New Project → Empty Activity → Language: Kotlin।

ধাপ ২: লেআউট (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_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="Tutorials Point"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="32sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textColor="@android:color/background_dark"
        android:textSize="24sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:layout_centerInParent="true"
        android:layout_marginTop="16sp"
        android:text="Restart Activity"
        android:textColor="@android:color/background_dark" />

</RelativeLayout>

ধাপ ৩: MainActivity.kt

package com.example.restartactivity

import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import java.util.Random

class MainActivity : AppCompatActivity() {

    lateinit var textView: TextView
    lateinit var button: Button
    var random = Random()

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

        textView = findViewById(R.id.textView)
        button = findViewById(R.id.button)

        // র‍্যান্ডম নম্বর দেখান
        textView.text = "Random Number: ${random.nextInt(100)}"

        button.setOnClickListener {
            val intent = intent // বর্তমান ইন্টেন্ট সংরক্ষণ
            finish()            // বর্তমান এক্টিভিটি ফিনিশ করুন
            startActivity(intent) // নতুন করে এক্টিভিটি স্টার্ট করুন
        }
    }
}

ধাপ ৪: AndroidManifest.xml

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

    <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>

কিভাবে কাজ করে

  1. বাটনে ক্লিক করলে intent ভেরিয়েবলে বর্তমান ইন্টেন্ট সংরক্ষিত হয়।
  2. finish() কল করলে onDestroy() কল হয়ে এক্টিভিটি ধ্বংস হয়।
  3. startActivity(intent) নতুন ইন্সট্যান্স তৈরি করে onCreate() কল করে।
  4. ফলাফল: র‍্যান্ডম নম্বর পরিবর্তিত হয় (নতুন ইনস্ট্যান্সে নতুন র‍্যান্ডম জেনারেট হয়)।

বিকল্প পদ্ধতি: recreate()

button.setOnClickListener {
    recreate() // API 11+, স্বয়ংক্রিয়ভাবে রিস্টার্ট করে
}

recreate() আধুনিক এবং সংক্ষিপ্ত, তবে কাস্টম ইন্টেন্ট ডেটা পাস করতে চাইলে পূর্বের পদ্ধতি ব্যবহার করুন।

ব্যবহারের ক্ষেত্র

  • ভাষা পরিবর্তন (Locale change) পরে UI রিফ্রেশ
  • থিম/নাইট মোড টগল
  • কনফিগারেশন চেইঞ্জ হ্যান্ডলিং
  • ফর্ম রিসেট বা ক্লিয়ার

সতর্কতা

রিস্টার্টের সময় স্টেট হারাতে পারে। গুরুত্বপূর্ণ ডেটা onSaveInstanceState()-এ সংরক্ষণ করুন বা ViewModel ব্যবহার করুন।

  1. এন্ড্রয়েডে অ্যাক্টিভিটি রিস্টার্ট করার পদ্ধতি

  2. Kotlin ব্যবহার করে Android-এ বাটন ক্লিক করে নতুন অ্যাক্টিভিটি শুরু করা

  3. Kotlin ব্যবহার করে Android-এ রানটাইমে TextView স্টাইল পরিবর্তন করা

  4. অ্যান্ড্রয়েড এমুলেটরের IP ঠিকানা কোটলিন ব্যবহার করে পাওয়ার উপায়