خیلی وقتا برای استارت کردن یک activity باید باید یک نمونه از Intent بسازید و به متد startActivity پاس بدید که راحته و مث آب خوردن انجام میشه !
ولی روش خیلی بهترش که فقط با یه کد خط اجرا میشه اینه :
یه کلاس از نوع کاتلین بسازید و اون رو داخل یه package به اسم extension بزارید (ساخت package الزامی نیست . فقط برای تمیز بودن محیط کار اینو گفتم . البته ممکنه بعدا extension های دیگه ای اضافه کردید پس بهتره اضافه کنید , وقت زیادی نمیگیره نمیدونم چرا انقد لجبازی میکنید !). بعد داخل این کلاس خالی کدهای زیر رو paste کنید . دقت کنید که نیازی به تعریف بدنه کلاس نیست . این کار باعث میشه متدهایی که داخل این فایل تعریف میشن به صورت همگانی داخل تمام کلاس های دیگه در دسترس باشند (البته با توجه به receiver های هر متد)
fun <T : Class<out AppCompatActivity>> AppCompatActivity.intentTo(dest: T) { this.startActivity(Intent(this, dest)) } fun <T : Class<out AppCompatActivity>> AppCompatActivity.intentToAndFinish(dest: T) { this.startActivity(Intent(this, dest)) this.finish() }
فقط کافیه داخل activity متد intentTo رو فراخوانی کنید و activity مقصد رو به عنوان پارامتر ارسال کنید . اگر میخواهید که بعد از ارسال اینتنت activity فعلی رو هم بزنید نابود کنید!! (finish کنید) intentToAndFinish رو فراخوانی کنید
نتیجه اینطوری میشه :
intentToAndFinish(SecondActivity::class.java) // or intentTo(SecondActivity::class.java)
این پست همچنان ادامه دارد ....
روز/شب خوبی داشته باشید