ন্যাভিগেশন ড্রয়ারটি ব্যবহার করার সময় অ্যান্ড্রয়েড ডেভেলস সুপারিশ করছে যে অ্যাকশনবারে "ন্যাভিগেশন ড্রয়ারে প্রতিনিধিত্ব করা কেবলমাত্র সেই স্ক্রিনগুলিতেই আসলে নেভিগেশন ড্রয়ারের চিত্র থাকা উচিত" এবং "অন্যান্য সমস্ত স্ক্রিনের theতিহ্যবাহী আপ ক্যারেট থাকা উচিত।"
বিশদ জন্য এখানে দেখুন: http://youtu.be/F5COhlbpIbY
আমি একাধিক স্তরের টুকরোগুলি নিয়ন্ত্রণ করতে একটি ক্রিয়াকলাপ ব্যবহার করছি এবং নেভিগেশন ড্রয়ার চিত্রটি সমস্ত স্তরে প্রদর্শিত ও কার্য করতে পেতে পারি।
নিম্ন স্তরের খণ্ডগুলি তৈরি ActionBarDrawerToggle
setDrawerIndicatorEnabled(false)
করার সময় নেভিগেশন ড্রয়ারের চিত্রটি লুকানোর জন্য আমি কল করতে পারি এবং আপ ক্যারেটটি প্রদর্শিত করতে পারি
LowerLevelFragment lowFrag = new LowerLevelFragment();
//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout,
lowFrag, "lowerFrag").addToBackStack(null).commit();
মূল নেভিগেশন ড্রয়ারের চিত্রের পরিবর্তে উপরের ক্যারেটটি এখনও উপরে স্তরের টুকরাগুলিতে নেভিগেট করার সময় আমার সমস্যা হচ্ছে। নেভিগেশন ড্রয়ারের চিত্রটি পুনরায় প্রদর্শনের জন্য শীর্ষ স্তরের টুকরোগুলিতে অ্যাকশনবারকে কীভাবে "রিফ্রেশ" করবেন সে সম্পর্কে কোনও পরামর্শ?
সমাধান
টমের পরামর্শ আমার পক্ষে কাজ করেছিল। আমি যা করেছি তা এখানে:
যথোপযুক্ত সৃষ্টিকর্তা
এই ক্রিয়াকলাপটি অ্যাপ্লিকেশানের সমস্ত অংশকে নিয়ন্ত্রণ করে।
অন্যদের প্রতিস্থাপনের জন্য নতুন টুকরো তৈরি করার সময়, আমি ড্রয়ারটগলটি এটির setDrawerIndicatorEnabled(false)
মতো সেট করে রেখেছি :
LowerLevelFragment lowFrag = new LowerLevelFragment();
//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout,
lowFrag).addToBackStack(null).commit();
এরপরে, একটি ওভাররাইডে onBackPressed
আমি ড্রয়ারটগলটিকে setDrawerIndicatorEnabled(true)
পছন্দ করতে সেট করে উপরেটি উল্টিয়েছি :
@Override
public void onBackPressed() {
super.onBackPressed();
// turn on the Navigation Drawer image;
// this is called in the LowerLevelFragments
setDrawerIndicatorEnabled(true)
}
লোয়ার লেভেল ফ্রেমে
খণ্ডগুলিতে আমি সংশোধন করেছি onCreate
এবং এটি onOptionsItemSelected
পছন্দ করেছি:
ইন onCreate
যোগ setHasOptionsMenu(true)
অপশন মেনু কনফিগার সক্রিয়। অ্যাকশনবারে <setDisplayHomeAsUpEnabled(true)
সক্ষম করতেও সেট করুন :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// needed to indicate that the fragment would
// like to add items to the Options Menu
setHasOptionsMenu(true);
// update the actionbar to show the up carat/affordance
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
}
তারপরে onOptionsItemSelected
যখনই < টিপানো onBackPressed()
হয় তখন ক্রিয়াকলাপ থেকে ক্রমবর্ধমান স্তরের এক স্তর উপরে যেতে এবং নেভিগেশন ড্রয়ারের চিত্রটি প্রদর্শিত করতে কল করে :
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Get item selected and deal with it
switch (item.getItemId()) {
case android.R.id.home:
//called when the up affordance/carat in actionbar is pressed
getActivity().onBackPressed();
return true;
…
}
.replace(R.id.frag_layout
। এটি যদি আরও একটি শ্রেণিবিন্যাস স্তর হয় তবে আমি আশা করব যে আপনি .add
এটি পিছনের দিকে চলে যাবেন।
theDrawerToggle.setDrawerIndicatorEnabled(false);
অভ্যন্তরটি কীভাবে উল্লেখ করবেন ? আমি মনে করি এটি প্রধান ক্রিয়াকলাপ শ্রেণিতে ফাইল হিসাবে ঘোষিত হয়েছে। আমি এটি উল্লেখ করার উপায় খুঁজে পাচ্ছি না। কোন ইঙ্গিত?
setDisplayOptions()
পদ্ধতিটি ToolbarWidgetWrapper
একই অংশে দ্বিতীয়বার প্রবেশ করার সময় আইকনটি পুনরায় তৈরি করবে না। অন্যরাও যখন এই সমস্যার জন্য হোঁচট খায় কেবল তখনই এখানে রেখে দেওয়া।