کلیدستان

نسخه‌ی کامل: یک مشکل در Navigation Drawer (برنامه نویسی اندروید)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان
من یه navigation ساختم و درست کار میکنه و همه چیش اوکی هست ولی یه مشکل دارم
اینکه وقتی منو navigation رو باز میکنم  و دکمه بک رو میزنم میخام مثل برنامه های دیگه navigation بسته بشه اما الان بک میزنم activity بک میشه...
navigation رو هم در actionbar سفارشی ساختم و با fragment ها actionbar رو ساختم
فابل های مربوط به navigation هم ایناس


ممنون میشم راهنماییم کنید
نمیدونه کسی؟ Sad
و در ادامه...


اکشن بار برنامه هم به صورت سفارشی ساخته شده
فکر میکنم با اون فایل های بالا فهمیده بشه که من با چه روشی این منو رو ساختم
اما باز هم اگر نیاز بود بگین تا کد هاش رو هم قرار بدم


و با این فایل ها منو من به این صورت درمیاد


و وقتی روش سلکت میشه اینجوری میشه Tongue

سلام.
ابتدا باید روش (method) مربوط به بستن Navigation Drawer را در میان کدها بیابید (حالا Navigation Drawer با هر کدی که نوشته شده باشد). 
با اجرای این روش، Navigation Drawer بسته می شود، پس باید کدهای Activity را به گونه ای تغییر دهیم که اگر بر روی دکمه Back گوشی اشاره شد، به جای بسته شدن Activity ، روش مورد نظر اجرا شود. برای این منظور، باید روش مورد نظر را در روش onBackPressed از Activity بنویسیم :

کلید شماره 234

اما نکته مهم این است که اگر Navigation Drawer قبلا بسته شده باشد، باید با اشاره بر روی دکمه back ، از Activity خارج شویم، بنابراین باید اجرای کدها را حالت بندی کنید که اگر Navigation Drawer باز بود، روش مربوط به بسته شدن آن اجرا شود و اگر بسته بود، کد زیر برای بسته شدن Activity اجرا گردد :

کد پی‌اچ‌پی:
finish(); 

با جستجو در کدهای Navigation Drawer می توانید کدهای مربوط به تشخیص باز و بسته بودن Navigation Drawer را بیابید.

اما بد نیست که همین مورد را برای Navigation Drawer استاندارد در Android Studio که با انتخاب گزینه زیر می توان ساخت (هنگام ساخت پروژه جدید)، ذکر کنیم :


در Navigation Drawer مورد نظر، بخشی که بنده در مورد آن صحبت کردم، به صورت زیر کدنویسی شده است :

کد پی‌اچ‌پی:
@Override
public void onBackPressed() {
 
   DrawerLayout drawer = (DrawerLayoutfindViewById(R.id.drawer_layout);
 
   if (drawer.isDrawerOpen(GravityCompat.START)) {
 
       drawer.closeDrawer(GravityCompat.START);
 
   } else {
 
       super.onBackPressed();
 
   }


در کد بالا، بخش زیر یعنی همان اجرای کدهای پیش فرض در هنگام اشاره بر روی دکمه Back (همان بسته شدن Activity) (بنابراین به جای اجرای finish می توانید این کد را بنویسید) :

کد پی‌اچ‌پی:
super.onBackPressed(); 


Flower
تشکر فراوان بابت راهنمایی کاملا واضحتون
ممنووووووون
سلام عزیز میشه بگی چه جوری این اکشن بار و اسلاید منو رو ساختی و یک دکمه برای باز شدن اسلاید منو تو اکشن بار گزاشتی؟؟؟