অ্যান্ড্রয়েড ইন্টারমিডিয়েট টিউটোরিয়াল ৫ঃ এক্টিভিটি ( Activity ) ও ইন্টেন্ট ( Intent )

সবাইকে সালাম।
আশা করি ভালো আছেন।
আগের পর্ব না পড়লে পড়ে নিন এখান থেকে।
আপনারা যারা রেগুলার পড়েন তারা কমেন্ট করবেন। তাহলেই আমি বুঝতে পারবো কোন দিকে যাচ্ছি। ভুল হলে ধরিয়ে দিবেন। সঠিক হবে কিছু না বল্লেও চলবে।
এর আগের কয়েক পর্বে আমরা বিভিন্ন টুলস ফাইলস এর সাথে পরিচিত হয়েছিলাম, এই পর্ব থেকে আমরা সরাসরি কাজে চলে যাবো। রেডি? আজকে আমরা দুইটা টপিক নিয়ে কথা বলবো , প্রথম টপিক এক্টিভিটি ( Activity ) এবং সেকেন্ড টপিক ইন্টেন্টস ( Intent ) ।

এক্টিভিটি ( Activity ) :
আপনি ইতিমধ্যেই জাভা জেনে থাকবেন। না জানলে অবশ্য এগুলা পড়ে বিশেষ লাভ নাই। জাভা’তে একটা ক্লাস যখন এক্সেকিউট হয় তখন সেটা রান করা শুরু করে main মেথড থেকে। সেইম ভাবে আমাদের অ্যান্ড্রয়েড শুরু করে এক্টিভিটি ( Activity ) এর onCreate মেথড কল দিয়ে।
আপনি যখন একটা অ্যান্ড্রয়েড অ্যাপ্লিকেশন ওপেন করেন তখন সেটার হোম পেজ দেখেন। সেখানে যা দেখেন তাই একটা এক্টিভিটি ( Activity ) । একটা সিঙ্গেল পেজ একটা এক্টিভিটি ( Activity ) । কোন বাটনে ক্লিক করে আরেকটা পেজে গেলেন সেটা এক্টিভিটি ( Activity ) । প্রতিটা এক্টিভিটি ( Activity ) এর দুইটা জিনিস থাকে। এক, একটা জাভা ফাইল এবং দুই, সেই ফাইলের সাথে লিঙ্কড বা করেস্পন্ডিং একটা XML ফাইল। এক্সএমএল ( XML ) সম্পর্কে আইডিয়া না থাকলে এখানে যান।

এক্টিভিটি ( Activity ) এর কলব্যাক মেথড এর লাইফ সাইকেলটা দেখে নেইঃ

android_activity_lifecycle

এখানকার সব মেথড ইমপ্লিমেন্ট করতে হবে এমন না। তবে onCreate অবশ্যই ইমপ্লিমেন্ট করতে হবে একটা এক্টিভিটি ( Activity ) পেতে।
চলুন দেখে নেই কোনটা কি কাজ করেঃ
– onCreate() , এক্টিভিটি ( Activity ) ক্রিয়েট হতেই এই মেথড কল হয়।
– onStart() , যখন এক্টিভিটি ( Activity ) ইউজারের কাছে ভিজিবল।
– onResume() , যখন ইউজার অ্যাপ্লিকেশনের সাথে ইন্টারেকশন শুরু করে।
– onPause() , যদি এক্টিভিটি ( Activity ) পজ করার দরকার হয়।
– onStop(), যখন এক্টিভিটি ( Activity )  ইনভিজিবল করা হয়।
– onDestroy() , ঠিক এক্টিভিটি ( Activity )  ডেস্ট্রয় করার আগের মুহুর্তে এটা কল হয়।
– onRestart() , যখন এক্টিভিটি ( Activity )  স্টপ হওয়ার পর আবার স্ট্যার্ট করতে হয় তখন এই মেথড কল হবে।

আশা করি এক্টিভিটি পার্ট ক্লিয়ার। না হলে কমেন্ট করুন, বুঝিয়ে দিবো। চলুন সেকেন্ড পার্টে যাওয়া যাক।

 

ইন্টেন্ট ( Intent ) :
ইন্টেন্ট দিয়ে অনেক কাজ করা যায়। আপাতত আমরা যেটা করবো যেটা হচ্ছে ডাটা পাস। ইন্টেন্ট এর কাজ হচ্ছে, একটা এক্টিভিটি ( Activity )  থেকে আরেকটা এক্টিভিটি ( Activity )  তে যাওয়ার সময় কিছু ডাটা নিয়ে যাওয়া। ইন্টেন্ট ডাটা ব্রডকাস্টও করে। সেগুলা পরে দেখবো। এই পর্যন্ত ক্লিয়ার? না হলেও সমস্যা নাই, উদাহরণে গেলে সব ক্লিয়ার হবে যাবে।

ইন্টেন্ট ( Intent ) নিয়ে কাজ করতে গেলে আপাতত আমাদের কি লাগবে তা বলার আগে একটা উদাহরন দেখে নেই,
Intent i = new Intent(this, ActivityTwo.class);
startActivity(i);

এখানে আমরা ইন্টেন্ট ক্লাসের অব্জেক্ট ক্রিয়েট করলাম এবং ডান দিকে ফার্স্ট ব্র্যাকেটে খেয়াল করুন, দুইটা জিনিস। (getApplicationContext(), ActivityTwo.class) _ এখানে প্রথমটা মানে getApplicationContext() হচ্ছে আপনি এখন কোন ক্লাস বা এক্টিভিটিতে আছেন আর পরেরটা হচ্ছে ডাটা নিয়ে কই যাবেন বা কোন ক্লাস/এক্টিভিটিতে যাবেন? আর, startActivity(i) হচ্ছে এক্টিভিটি স্ট্যার্ট করে দেয়া।
কই আছি, কই যাবো সবি ঠিক। কিন্তু আমরা তো ডাটা নিলাম না এখনো। চলুন ডাকা নেয়া যাক,
i.putExtra(“myKey”, “AndroidLime first activity brings to another activity with this line.”);
এখানে যা হচ্ছে তা খুবি সিম্পল। putExtra মেথডে আমরা দুইটা স্টিইং দিলাম। প্রথমটা হচ্ছে কি(key)। পরেরটা হচ্ছে দরকারী ডাটা। নতুন এক্টিভিটিতে গিয়ে আমরা কি(key) ধরে ডাকলে ডাটাটা পাবো। সেই ডাক দিতে নিচের কোড লিখবো,
String name = intent.getStringExtra(“myKey”);
নতুন এক্টিভিটিতে গিয়ে getStringExtra মেথডে কি(key)’তে কীর’ নাম দিলেই এই এক্টিভিটিতে আসা ডেটা পাওয়া যাবে। যেটা এখন String name এর মধ্যে আছে।

চুলুন নতুন প্রজেক্ট ক্রিয়েট করিঃ
প্রথমে ভিডিওটা দেখে নেই,



নিচের ছবির মত প্রজেক্ট ক্রিয়েট করুনঃ

new android project create
MainActivity.java ফাইলে নিচের কোড কপি করুন। যেগুলা বুঝবেন না সেগুলা নিয়ে হতাশ হওয়ার কিছু নাই। পরের লেখায় সেগুলা ক্লিয়ার করিয়ে দিবো ইনশাল্লাহ।


package com.androidlime.actint;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

	Button bs1;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		bs1 = (Button) findViewById(R.id.button1);

		bs1.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {

				Toast.makeText(getApplicationContext(), "Clicked on the button", Toast.LENGTH_LONG).show();
				Intent i = new Intent(getApplicationContext(),
						ActivityTwo.class);

				i.putExtra("myKey",
						"AndroidLime first activity brings to another activity with this line.");

				startActivity(i);
			}
		});
	}

}


এখন layout ফোল্ডারে activity_main এ ডাবল ক্লিক করে ওপেন করে নিচের কোড পেস্ট করুনঃ


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.androidlime.actint.MainActivity" >


    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="148dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="Send data" />

</RelativeLayout>

এখন নতুন এক্টিভি com.androidlime.actint প্যাকেজে রাইট ক্লিক করে  NEW তারপর Class এ ক্লিক করে নতুন এক্টিভিটি ক্রিয়েট করুন, নাম দিন, ActivityTwo তারপর নিচের কোড কপি করুন Activity.java ফাইলে।


package com.androidlime.actint;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class ActivityTwo extends Activity{

	TextView tvs;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_two);
		
		tvs = (TextView) findViewById(R.id.textView1);
		
		Intent intent = getIntent();
		String name = intent.getStringExtra("myKey");
		
		tvs.setText(name);
	}
}


এখন ActivityTwo.java এর জন্য layout ফোল্ডারে রাইট ক্লিক করে New তারপর Android XML file এ ক্লিক করুন। activity_two নামে নতুন XML ফাইল ক্রিয়েট করুন। সেখানে নিচের কোড পেস্ট করুনঃ


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:background="#00aee5" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>


আমরা শেষ পর্যায়ে। নতুন কোন অ্যান্ড্রয়েড এক্টিভিটি এড করলে তা AndroidManifest.xml ফাইলে বলে দেয়া লাগে।

আমাদের মেনিফেস্ট ফাইল। বাম দিকে লেয়াউট ও সেকেন্ড এক্টভিটি ফাইল কই আছে দেখে নিন

আমাদের মেনিফেস্ট ফাইল। বাম দিকে লেয়াউট ও সেকেন্ড এক্টভিটি ফাইল কই আছে দেখে নিন

নিচের মেনিফেস্ট ফাইল হুবহু কপি করুনঃ

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidlime.actint"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
         <activity
            android:name=".ActivityTwo" >
        </activity>
    </application>

</manifest>

 

আজ এই পর্যন্তই। আরেক্ট বাড়ালে মাথায় জ্যাম লেগে যেতে পারে। ভালো থাকবেন।

জাভা শিখুন ভিডিও টিউটোরিয়াল দেখে, এখান থেকে।

Mosharrof Rubel

আমাকে ফেসবুকে পাবেন এখানেঃ মোশাররফ রুবেল

You may also like...

Leave a Reply