একটি Intent হচ্ছে একটা অবজেক্ট যা দুটো পৃথক বিষয়ের (যেমন দুটো একটিভিটি) মধ্যে রানটাইম বাইন্ডিং প্রদান করে। Intent একটা অ্যাপের “কোন কিছু করার পরিকল্পনা” কে চিত্রায়িত করে। আপনি সুবিস্তৃত বহুবিধ কাজে ইনটেন্ট ব্যবহার করতে পারেন তবে বেশীরভাগ সময় এটা অন্য কর্মকান্ড শুরু করার কাজে ব্যবহার করা হয়ে থাকে।
DisplayMessageActivity নামের কর্মকান্ড শুরু করতে sendMessage()পদ্ধতির মধ্যে একটা ইনটেন্ট তৈরী করুন:
Intent intent = new Intent(this DisplayMessageActivity.class);
কনস্ট্রাক্টর এখানে দুইটা প্যারামিটার ব্যবহার করেছেন:
একটা Context হচ্ছে এটার প্রথম প্যারামিটার (এটা ব্যবহার করা হয় কারন Activity ক্লাস হচ্ছে Context এর একটি সাব ক্লাস)
অ্যাপ উপাদানের Class যেখানে সিস্টেমের উচিত Intent ডেলিভারি দেওয়া (এক্ষেত্রে একটিভিটি টির শুরু হওয়া উচিত )
একটি ইনটেন্ট অন্য অ্যাপে পাঠানো |
---|
এই অনুশীলনীতে যে ইনটেন্ট তৈরী করা হয়েছে যা এক্সপ্লিসিট ইনটেন্ট (explicit intent) হিসাবে বিবেচিত, কারন Intent টি যথাযথ অ্যাপ কম্পোনেন্ট কে সুনির্দিষ্ট করে দেয় যেখানে ইনটেন্ট দেয়া উচিত। যাহোক ইনটেন্ট আবার ইমপ্লিসিট (implicit) ও হতে পারে, এখানে কাঙ্খিত কম্পোনেন্ট কে সুনির্দিষ্ট করে দেয় না, কিন্তু ইনটেন্টে রেসপন্স করতে ডিভাইসে যে কোন অ্যাপ ইনস্টল করতে অনুমোদন করে যতক্ষন না এটা এই কাজের জন্য মেটা-ডেটা স্পেসিফিকেশন কে সন্তুষ্ট করে যা বিভিন্ন Intent এ সুনির্দিষ্ট। আরও জানতে অন্য অ্যাপের সাথে পারস্পরিক যোগাযোগ করা সম্পর্কিত ক্লাস দেখুন। |
নোট: যদি আপনি আইডিই যেমন ইক্লিপস ব্যবহার করে থাকেন তাহলে isplayMessageActivity রেফারেন্স একটি এরর তৈরী করতে পারে, কারন ক্লাসটি এখন পর্যন্ত অস্তিত্বশীল নয়। আপাতত এররটি উপেক্ষা করুন; আপনি শিঘ্রই ক্লাসটি তৈরী করতে পারবেন।
একটি ইনটেন্ট শুধুমাত্র অন্য আরেকটি একটিভিটি শুরু করা কে অনুমোদনই করে না, একটিভিটিতে একগুচ্ছ ডাটাও নিয়ে আসে। sendMessage()পদ্ধতির ভিতরে EditText এলিমেন্ট পেতে findViewById()ব্যবহার করুন এবং ইনটেন্ট এ এর টেক্সট ভ্যালু এ্যাড করুন:
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
নোট: android.content.Intent এবং android.widget.EditText এর জন্যে আপনার স্টেটমেন্ট আনার দরকার। আপনি এক মুহুর্তে EXTRA_MESSAGE কনস্ট্যান্স কে নির্ধারন করতে পারবেন।
একটি Intent কি (Key)ভ্যালু পেয়ার হিসাবে বিভিন্ন ডাটা টাইপস নিয়ে আসতে পারে যাকে extras বলে। putExtra()পদ্ধতি প্রথম প্যারামিটারে কি (Key) নেম নেয় এবং দ্বিতীয় প্যারামিটারে কি (Key) ভ্যালু নিয়ে থকে।
পরবর্তী এ্যক্টিভিটি এর জন্য এক্সট্রা ডাটা অনুসন্ধান করতে পাবলিক কনস্ট্যান্স ব্যবহার করে আপনার ইনটেন্ট এর এক্সট্রার জন্য কি (Key) নির্ধারন করে দেওয়া উচিত। সুতরাং MainActivity ক্লাসের সবচেয়ে উপরে Extra_Message ডেফিনেশন এ্যাড করে দিন:
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
...
}
প্রিফিক্স হিসাবে আপনার অ্যাপ এর প্যাকেজ নাম ব্যবহার করে ইনটেন্ট এক্সট্রার জন্য কি (Keys) নির্ধারন করা সাধারনত একটি ভালো চর্চা। এটা নিশ্চিত করে যে অন্যান্য অ্যাপের সাথে পারস্পরিক ক্রিয়ার ক্ষেত্রে তারা স্বতন্ত্র।