বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

প্যারেন্ট একটিভিটিতে আপ নেভিগেট করুন

যখন ইউজার অ্যাপ আইকন প্রেস করে তখন নেভিগেট আপ করতে, আপনি NavUtils ক্লাসের স্ট্যাটিক পদ্ধতি navigateUpFromSameTask() ব্যবহার করতে পারেন। যখন আপনি এই মেথড (পদ্ধতি) কল করবেন, এটা বর্তমান একটিভিটি সমাপ্ত করে এবং যথাযথ প্যারেন্ট একটিভিটি স্টার্ট (অথবা পূনরায় শুরু করা) করে। যদি অভিষ্ট প্যারেন্ট একটিভিটি টাস্কের ব্যাক স্ট্যাকের মধ্যে থাকে, এটা যেভাবে FLAG_ACTIVITY_CLEAR_TOP দ্বারা নির্ধারিত হয় সেভাবে সামনে এগিয়ে যায়।

উদাহরণস্বরূপ:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

কিন্তু, navigateUpFromSameTask()ব্যবহার করা শুধূমাত্র তখনই যথাযথ হবে যখন আপনার অ্যাপ বর্তমান টাস্কের (কাজের) মালিক হবে (এটা হচ্ছে ইউজার এই কাজটি আপনার অ্যাপ থেকে শুরু করবে। এটা যদি সত্যি না হয় এবং আপনার একটিভিটি একটি টাস্কে শুরু হয় যা অন্য একটি অ্যাপ ধারণ করে, তখন নেভিগেট আপের (Up) একটি নতুন টাস্ক তৈরী করে দেয়া উচিত আপনার অ্যাপের সাথে থাকবে, যা আকাঙ্খা করবে যে আপনি একটি নতুন ব্যাক স্ট্যাক তৈরী করবেন।

একটি নতুন ব্যাক স্ট্যাক দিয়ে নেভিগেট আপ করা

যদি আপনার একটিভিটি কোন intent filters প্রদান করে যা অন্য অ্যাপকে একটিভিটিটি শুরু করতে দেয়, আপনার onOptionsItemSelected() কলব্যাক বাস্তবায়ন করা উচিত যাতে যদি ইউজার অন্য কোন অ্যাপের টাস্ক থেকে আপনার একটিভিটিতে প্রবেশ করার পর আপ বাটন প্রেস করে, আপনার অ্যাপ নেভিগেট আপ করার পূর্বে যথাযথ ব্যাক স্ট্যাক দিয়ে একটি নতুন টাস্ক শুরু করে।

আপনি এটা করতে পারেন, বর্তমান একটিভিটি ইনস্ট্যান্স একটি ভিন্ন অ্যাপের টাস্কে আছে কিনা তা চেক করতে প্রথমেই shouldUpRecreateTask()কল করার মাধ্যমে। ফিরতি বিষয়টা যদি সত্যি হয়, তখন TaskStackBuilder দিয়ে একটি নতুন টাস্ক তৈরী করুন। অন্যথায়, যেভাবে উপরে বর্নিত হয়েছে সেভাবে আপনি navigateUpFromSameTask()পদ্ধতি ব্যবহার করতে পারেন।

উদাহরণস্বরূপ:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        Intent upIntent = NavUtils.getParentActivityIntent(this);
        if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
            // This activity is NOT part of this app's task, so create a new task
            // when navigating up, with a synthesized back stack.
            TaskStackBuilder.create(this)
                    // Add all of this activity's parents to the back stack
                    .addNextIntentWithParentStack(upIntent)
                    // Navigate up to the closest parent
                    .startActivities();
        } else {
            // This activity is part of this app's task, so simply
            // navigate up to the logical parent activity.
            NavUtils.navigateUpTo(this, upIntent);
        }
        return true;
    }
    return super.onOptionsItemSelected(item);
}

নোট: addNextIntentWithParentStack()পদ্ধতিকে কাজ করাতে, আপনার অবশ্যই উপরে আলোচিত android:parentActivityName এট্রিবিউট (এবং সমরূপ < meta-data> এলিমেন্ট)ব্যবহার করে মেনিফেষ্ট ফাইলের মধ্যে প্রতিটা একটিভিটির লজিক্যাল প্যারেন্ট ডিক্লেয়ার করতে হবে।