অ্যান্ড্রয়েড ইনটেন্ট

একটা অ্যাপ থেকে আরেকটা অ্যাপ বা একটা অ্যাপের বিভিন্ন এক্টিভিটির মধ্যে যোগাযোগের জন্য ইন্টেন্ট ব্যবহার করা হয়। যেমন আমরা যখন ফেসবুক থেকে ক্যামেরা বা গ্যালারি ওপেন করি, তখন আমাদের সিলেক্ট করা ছবিটি ফেসবুক অ্যাপে রিটার্ণ করে। এটা হচ্ছে ইন্টেন্টের কাজ। ইন্টেন্ট দিয়ে নিজের কাজ গুলো করা যায়ঃ

  1. Start an Activity
  2. Start sub-activity.
  3. Start a Service.

ইন্টেন্ট দুই প্রকার। একটা হচ্ছে Explicit Intent আরেকটা Implicit intent। Explicit Intent এ আমরা সরাসরি বলে দেই কোন এক্টিভিটি বা কোন কোন অ্যাপ ওপেন করতে হবে। আর Implicit Intent এ আমরা বলে দেই না কোন অ্যাপ বা কোন এক্টিভিটি ওপেন করতে হবে। ব্যবহারকারীকে তার পছন্দ অনুযায়ী সিলেক্ট করতে দেই।

 

আমরা সিম্পল একটা অ্যাপ তৈরি করব ইন্টেন্ট সম্পর্কে জানার জন্য। যা অ্যাপের একটা এক্টিভিটি থেকে আরেকটা এক্টিভিটিতে কিছু ডেটা পাস করবে। এ জন্য আমরা একটা নতুন এন্ড্রয়েড প্রজেক্ট তৈরি করব। প্রতিটা প্রজেক্টেই একটা ডিফল্ট এক্টিভিটি থাকে। আমাদের আরেকটা এক্টিভিটি লাগবে। কিভাবে নতুন একটা এক্টিভিটি যুক্ত ক্রয়া যায়, তা   এন্ড্রয়েড মাল্টি একটিভিটি লেখাটিতে  বিস্তারিত লেখা রয়েছে।

ঐ টিউটোরিয়ালে আমরা দেখেছি কিভাবে নতুন একটা এক্টিভিটি ওপেন করতে হয়। এখন আমরা দেখব কিভাবে একটা এক্টিভিটি ওপেন করার সময় কোন ডেটা পাস করতে হয়। ডেটা পাস করা সহজ। কী ভ্যালু পেয়ারে ডেটা গুলো পাঠাতে হয়। প্রতিটা ডেটার একটা করে কী থাকবে। নিচের মত করেঃ

intent.putExtra("message","Message from first activity"); 

এভাবে যত ইচ্ছে তত গুলো ডেটা আমরা পাস করতে পারব।

নতুন যে এক্টিভিটি ওপেন হবে, তা থেকে আমাদের আমার ডেটা গুলো রিসিভ করতে হবে। ডেটা রিসিভ করব আমরা যে কী ব্যবহার করেছি,তা দিয়ে। এভাবেঃ

String message= intent.getStringExtra("message");

এতটুকুই। সহজ না? এরপর আমরা চাইলে যে কোন যায়গায় ঐ ডেটা ব্যবহার করতে পারি।

ফাইল গুলোঃ
MainActivity.java:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button button;

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

        button = (Button) findViewById(R.id.button);


        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                intent.putExtra("message","Message from first activity");
                 startActivity(intent);
            }
        });
    }
}

SecondActivity.java:

 

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {

    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        Intent intent = this.getIntent();
        String message= intent.getStringExtra("message");

        textView = (TextView) findViewById(R.id.textView);

       textView.setText(message);
    }

}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="me.jakir.simpleintent.MainActivity">

    <Button android:text="Pass Data" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="12dp" android:layout_marginStart="12dp" android:id="@+id/button" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" />
</RelativeLayout>


activity_second.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="me.jakir.simpleintent.MainActivity">


    <TextView android:text="Message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginLeft="38dp" android:layout_marginStart="38dp" android:layout_marginTop="58dp" android:id="@+id/textView" />
</RelativeLayout>

প্রজেক্টের সোর্স কোড পাওয়া যাবে গিট রিপোজিটোরিতে

Leave a Reply