অ্যাকশনবারের পিছনের বোতামটি সক্ষম করতে আপনার ক্রিয়াকলাপে অবশ্যই অ্যাকশনবারের প্রয়োজন। এটি আপনি ব্যবহার করছেন থিম দ্বারা সেট করা হয়। আপনি আপনার ক্রিয়াকলাপের জন্য থিমটি সেট করতে পারেন AndroidManfiest.xml। আপনি যদি উদাহরণস্বরূপ @android:style/Theme.NoTitleBarথিমটি ব্যবহার করছেন তবে আপনার কাছে অ্যাকশনবার নেই have এই ক্ষেত্রে কলটি getActionBar()বাতিল হয়ে যাবে। সুতরাং নিশ্চিত হয়ে নিন যে আপনার প্রথমে অ্যাকশনবার রয়েছে।
পরবর্তী পদক্ষেপটি android:parentActivityNameআপনি পিছনের বোতামটি টিপলে আপনি নেভিগেট করতে চান এমন ক্রিয়াকলাপটি সেট করা । AndroidManifest.xmlএটিও করা উচিত ।
এখন আপনি onCreateআপনার "শিশু" ক্রিয়াকলাপের পদ্ধতিতে পিছনের বোতামটি সক্ষম করতে পারেন ।
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
এখন আপনার পিছনের বোতামটির জন্য যুক্তিটি প্রয়োগ করা উচিত। আপনি কেবল onOptionsItemSelectedআপনার "শিশু" ক্রিয়াকলাপে পদ্ধতিটি ওভাররাইড করে এবং পিছনের বোতামটির আইডি যাচাই করে দেখুন android.R.id.home।
এখন আপনি পদ্ধতি ফায়ার করতে পারেন NavUtils.navigateUpFromSameTask(this); কিন্তু আপনি নির্দিষ্ট করেছেন আত যদি android:parentActivityNameআপনি AndroidManifest.xmlএই আপনার অ্যাপ বিপর্যস্ত হবে।
কখনও কখনও এটি আপনি চান যা এটি আপনাকে স্মরণ করিয়ে দেয় যে আপনি "কিছু" ভুলে গেছেন। সুতরাং আপনি যদি এটি প্রতিরোধ করতে চান, আপনি এই getParentActivityIntent()পদ্ধতিটি ব্যবহার করে আপনার ক্রিয়াকলাপের কোনও পিতামাতার রয়েছে কিনা তা পরীক্ষা করতে পারেন । যদি এটি শূন্য হয়, আপনি পিতামাতাকে নির্দিষ্ট করেন নি।
এই ক্ষেত্রে আপনি সেই onBackPressed()পদ্ধতিটি ফায়ার করতে পারেন যা মূলত একইভাবে হয় যদি ব্যবহারকারীটি ডিভাইসে পিছনের বোতামটি টিপায়। আপনার অ্যাপ্লিকেশনটিকে ক্র্যাশ করে না এমন একটি ভাল বাস্তবায়ন হ'ল:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (getParentActivityIntent() == null) {
Log.i(TAG, "You have forgotten to specify the parentActivityName in the AndroidManifest!");
onBackPressed();
} else {
NavUtils.navigateUpFromSameTask(this);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
অনুগ্রহ করে লক্ষ্য করুন যে ব্যবহারকারীরা যে অ্যানিমেশনটি দেখে তা NavUtils.navigateUpFromSameTask(this);এবং এর মধ্যে আলাদা onBackPressed()।
আপনি কোন রাস্তাটি অবলম্বন করবেন এটি আপনার উপর নির্ভর করে তবে সমাধানটি আমি সহায়ক বলে মনে করেছি, বিশেষত যদি আপনি আপনার সমস্ত কাজের জন্য একটি বেস ক্লাস ব্যবহার করেন।
getActionBar().setDisplayHomeAsUpEnabled(true);অনক্রিট এবংswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}ইনonOptionsItemSelected? উভয়ই