آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ساخت توابع عمومی با امکان دریافت نام اکتیویتی درحال اجرا! (حل شده)

sadra  11 سال پیش  11 سال پیش
0 0

سلام. عصر همتون بخیر

من میخوام یه تابعی درست کنم در یک کلاس جدا، که توی هر اکتیویتی که اجرا بشه اسم اون اکتیویتی رو بگیره تابع رو اجرا کنه. برای مثال:

یه دکمه داریم در کلاس Main به اسم my_btn. حالا مخواییم یه تابع تعریف کنیم بگیم که آقا اگه روی دکمه my_btn کلیک شد اونوقت از اکتویتی که توش هست بره به فلان اکتیویتی.

اینو میخوام واسه اینکه یه تابعی دارم که طولانیه. بعد توش 10 بار اسم اکتیویتی تکرار شده. میخوام به تابع عمومی ازش تعریف کنم که این تابع اسم اکتیویتی که توش هست رو بگیره و اون رو بزاره توی همه جاهایی که احتیاج به اون اکتیویتی داره. مثلا توی چندجا این متد اجرا شده:

 my_btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Intent i=new Intent(Main.this,Other_activity.class);
startActivity(i);
}
});

میخوام بجای این Main.this اسم اکتیویتی که توش هست رو بگیره. چون میخوام این تابع تو چندتا اکتیویتی تکرار بشه.

0 0
کسی نمیتونه راهنمایی کنه ؟؟؟ :( (11 سال پیش)
+1 0
آموزشهای مروبط به کلاس G و ActivityEnhanced رو ببینید < دیگه نیازی نیست اسم اکتیویتی رو وارد کنید < در صورت استافده از این دو کلاس خود برنامه اکتیویتی در حال اجرا رو تشخیص میده< G.CurrentActivity (11 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
احمد اسدی  11 سال پیش
+1 0

اگه درست متوجه منظورتون شده باشم؛

به این شکل عمل کنید:

یک کلاس مثلآ بنام BaseActivity بسازین و از Activity میراث بشه. و حالا دیگر کلاس ها رو از BaseActivity میراث بری کنید.

حالا در کلاس BaseActivity یک کانسترکتر (Constructor )  بسازید که پارامتری از جنس Activity رو داشته باشه.

خب الان واسه صدا زدن این کلاس همیشه Activity ایی که اجرا هست، با یک پارامتر this به اون کلاس BaseACtivity ارسال کنید.

0 0
میشه یه نمونه پورٰه بدید یا مثلا اینجا یه کد ساده ازش بزنید لطفا؟ من نفهمیدم چی شد اصن! (11 سال پیش)
0 0
میشه یه نفر جواب سوال منو کامل بده؟ :( (11 سال پیش)
0 0
دوستان من هنوز جواب سوامو نگرفتما :( (11 سال پیش)
+1 0
ببین صدرا جان این جمله که دوستمون بهش اشاره کرد : (یک کلاس مثلآ بنام BaseActivity بسازین و از Activity میراث بشه. و حالا دیگر کلاس ها رو از BaseActivity میراث بری کنید) همون مبحث enhancedActivity است که استاد توی پروژه هاش انجام میده و توی فیلم ها میتونی ببینی که مثلا در enhancedActivity اکتیویتی رو بیاره روی حالت onresume البته درست یادم نیست . به این صورت که یک enhancedActivity میسازی و بقیه اکتیویتی ها رو از اون میگیری دیگه به این ترتیب هر کاری لازمه توی همون اکتیویتی انجام میده و اتوماتیک در بقیه هم اجرا میشه . فکر میکنم دوستان با این سرنخ میتونن بیشتر کمکت کنن . (11 سال پیش)
+1 0
الان یک سرچ کردم دیدم در جلسه ۱۲ در مبحث notes میتونی enhancedActivit رو پیدا کنی . (11 سال پیش)
+2 0
اموزش این مورد در 2-5 Activity Life Cycle قرار داره (11 سال پیش)
+2 0
ممنون از criss عزیز . این مورد در دقایق ۳۰ و ۳۶ تا آخر همین فیلم اشاره شده . ولی من هنوز علت این CurrentActivity رو به درستی درک نکردم یعنی نمیفهمم گرفتن اکتیویتی حاضر کجا به کار میاد ؟ کسی میدونه بگه ممنون . (11 سال پیش)
پاسخ به سوال 
مجتبی یگانه  11 سال پیش
+4 0

پاسخ pggco تا حدودی درسته ، اما نیاز به تکمیل داره

شما وقتی یک اکتیویتی والد داشته باشید به نام baseActivity یا enhancedActivity یا ...  که از  Activity ها Extends شده 

 ActivityBase extends Actvity {...}

حالا بقیه ی اکتیویتی ها از اکتیویتی والد شما ارث بری میکنن

 ActivityChildA extends ActivityBase {...}

حالا همه ی اکتیویتی ها قبل از شروع شدن ، یه سری صفاتی رو از پدرشون اجرا میکنن و به ارث میبرن ، حالا کافیه شما در onResume اکتیویتی والد بگید

G.currentActivity = this;

که در واقع G.currentActivity اکتیویتی جاری شما هست

----------------

اگر از ساختار کانستراکتوری استفاده کنید ، باید در لحظه ی ساخت شما این مقدار رو تعیین کنید که دسترسی ندارید و عملا در این مورد این کانستراکتور فراخوانی نخواهد شد !

پاسخ به سوال 
sadra  11 سال پیش
0 0

نههههههههههه. مشکلم حل نشده هنوز :(

خب یکی به من بگه من اینو چطوری میتونم توی یه اکتیویتی که extends شده از ListActivity استفاده کنم!؟

 

ویرایش توسط : محمد حسین 

-------------------------------------------------------------------------------------------------------------------------

دوست عزیز برای استفاده از روشی که مجتبی در بالا براتون نوشته و در آموزش ها هم استاد توضیحات لازم رو دادن در اینباره بهتره ارث بری اکتیویتی رو از ListActivity  بردارید و از کلاس Enhanced استفاده کنید و لیستتون رو به صورت کاستوم که باز هم آموزش های استاد در اینباره بسیار کامل هست بسازید و مشکلتون حل میشه .

 

 برای لایک زدن هم روی همون نظر زیر بزنید کفایت میکنه :دی

موفق باشید :)

+2 0
دوست عزیز لطفا برای سوالات کوتاه از بخش نظر استفاده کنید و پاسخ جدید باز نکنید با تشکر (11 سال پیش)
+1 0
عزیزجان، شما فصل 5 قسمت دوم آموزش رو ببینید :) (11 سال پیش)
+1 0
دقیقا ، انجمن برای درک بهتر هست نه درک سریع تر ! ، پس آموزش ها رو قدم به قدم نگاه کنید (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .