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

روشی راحتتر برای بازکردن یک Activity

AllahYar  12 سال پیش  12 سال پیش
+10 0

یه چیز خیلی عادی رو خواستم بگم به کاربرهای آماتور مثل خودم اگه با متدها آشنا شدن و اکتیوی رو هم فهمیدن پس بهتر تو کلاس اکتیویتی  پدر یه متدی نوشته بشه  و فقط یک پارامتر رو دریافت کنه و اونم مسیر اکتیوی که باید هدایت  بشه 

  public void ActionActivity(Class Activity)
    {
        Intent intent = new Intent(G.CurrentActitvity, Activity);
        G.CurrentActitvity.startActivity(intent);
    }

و بعد برای فراخوانی :

ActionActivity(SampleActivity.class);

و دیگه نیازی نیست هر بار اینت ایجاد بشه و ماکارانی بنویسیم

0 0
اسپاگتي عزيز, چرا گمراه ميکني؟ (12 سال پیش)
0 0
هنوز ماکارونی مینویسی که :دی متد با حرف کوچیک شروع میشه دلبندم ;) دیگه نظری ندارم (12 سال پیش)
0 0
آیتمی که شما معرفی کردی یا ایرادی که دوستمون گرفتن جزو تعاریف اسپاگتی کد نیست : لینک (12 سال پیش)
0 0
اگر به این کد می گید ماکارانی، پس به کدهایی که برای راه اندازی یک ListView ساده و بدتر از همه قابل Search بنویسیم، چی میگید؟ حتماً میشه یه دیگ اسپاگتی. (12 سال پیش)
0 0
تیتر سئوال تصحیح شد، بهتر تیتر سئوال بنویسیم :) (12 سال پیش)
0 0
آخه از بس در پی اچ پی عادت کردیم به ام وی سی که من یکی لااقل انتظار دارم ویزارد باشه خخخخ (12 سال پیش)
0 0
به نظر من MVC خودش اسپاگتی هست. اگر VC بود خیلی بهتر بود این وسط به نظر من M اضافه هست. (12 سال پیش)
0 0
درسته مدل کاربردی نداره منم این نظر رو دارم ولی قبول ندارم اسپاکتی هست میشه بگین علتش چیه که این نظر رو دارین ؟ (12 سال پیش)
0 0
اگر مدل باشه لازانیا هست و اگر نباشه اوکی هست مشکلی نیست. در واقع Model و Controller خیلی به هم شبیه هستند و به نظر من پاس دادن دیتا بین Controller و Model خیلی بی معنیه. تعجبم از اینکه چرا اکثر برنامه نویس های حرفه ای وجود Model رو واجب می دونن ولی به عقیده من طراح MVC یه کمکی بیکار بوده و برا خودش اختراع کرده و Microsoft هم به اسم تکنولوژی گذاشته تو کاراش. قبل از اینکه این اختراع بشه، همه برنامه نویس ها خودشون View رو از Controller جدا کرده بودن و نیاز به راهنمایی مخترع MVC نبود :) (12 سال پیش)
0 0
درسته ولی تو کیک من نقضشو دیدم و مدل کاربرد خاص خودشون داشت درسته میشه تو کنترلر پیاده سازی کرد ولی اینکه کتابخونه ها مرتبط مدل از مدل استفاده میشد منم الهام گرفتم با این شرط که برای هر جدول مدلی ایجاد نمیکردم قابل توصیف نیست ولی اصولن فکر کنم تنها کاربردش اینه که میفهمی چی به چیه ولی یادمه که کیک از مدلهاش برای صحت اطلاعاتش استفاده میکرد و خیلی کاربردی و مزخرف بود خخخ :) (12 سال پیش)
0 0
AllahYar شما مشخصه که دامیومنت های کیک رو نخوندین کامل که نمیدونید کاربرد Model ها چی هستن اگر کامل بخونید نظرتون 180 درجه برمیگرده ... (12 سال پیش)
0 0
وجود مدل و کنترلر جدا از هم لازمه. مدل موجودیتی بدون تصمیم گیری و کنترلر موجودیتی بدون دیتا هستش. وجود هر دو در کنار هم منطق برنامه رو از دیتا جدا میکنه. (12 سال پیش)
0 0
به نظر منم مدل باید باشه. من با Yii کار کردم و تصور اینکه مدل نداشته باشم برام سخته. اصولا اگه مدل لازم نبود این همه بزرگان نرم افزاری نمیپذیرفتنش. (12 سال پیش)
0 0
از اونجایی که حرفی برای گفتن ندارم (!) ،اگه ممکنه یک سری منبع معرفی کنید ، محض رضای خدا منم بفهمم موضوع چیه :| (12 سال پیش)
0 0
من که نفهمیدم آموزش آشپزیه یا برنامه نویسی ؟؟؟؟!!!!! (12 سال پیش)
0 0
چرا وحید جان پروژه هم باهاش نوشتم ولی خیلی وقت پیش حدودا سه سال پیش فکر کنم درست به خاطر ندارم ولی خوندم اینو قول میدم و خوب با ام وی سی آشنا هستم به طوری که یه فریم ورک رو شاید 6 بار بازنویسی کردم تا به نتیجه دلخواه نرسیدم با اینکه هنوز میگم قواعد رو رعایت نکردم ، چندتا از دوستانم دارن ازش لذت میبرن (12 سال پیش)
 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
uncocoder  12 سال پیش
+16 0

روش گفته شده مناسب نیست، چون خود ActionActivity یک متد static نیست ( راستی actionActivity درسته ) پس نمیشه از هر جایی صداش کرد و اول نمونه باید ساخته بشه که نمونه رو Framework می سازه. راه خوب این هست:

class G extends Application {
...

public static void startActivity(Class<? extends Activity> clazz){
Intent intent = new Intent(G.currentActivity, clazz);
G.currentActivity.startActivity(intent);
}
}

و صدا می زنیم:

G.startActivity(SomeActivity.class);
0 0
آیا متد رو هم میشه به عنوان آرگومان فرستاد؟ (12 سال پیش)
0 0
بله، در واقع وارد بخش Reflection میشه که جزء بخش های فوق پیشرفته هست. اما Method یا Field خودشون کلاس هستند و میشه هر کاری باهاشون کرد. حتی میشه به متدهای Private از یک کلاس دیگه یا یک Package دیگه دسترسی پیدا کرد! باورتون میشه! (12 سال پیش)
0 0
جالبه. آیا در آینده در مباحث آموزشی سایت جایی برای این موضوع کنار گذاشتید؟ (12 سال پیش)
0 0
دوستان همین مطالب رو هضم کنند کلی پروژه بزرگ میشه باهاشون انجام داد. Reflection بسیار کاربردی هست اما نه برای نوشتن پروژه بلکه برای نوشتن API و البته ساده تر شدن کد نویسی. مثلاً من برای خودم یک تکه کد نوشتم که بدون نوشتن FindViewById خودش میره، عناصر UI رو پیدا می کنه بعد cast می کنه و بعد میریزه تو فیلد. شما فقط کافیه فیلد رو صدا بزنید. حالا کی آموزشش بدیم، خودمم نمی دونم و فقط خدا می دونه :) (12 سال پیش)
0 0
واو خواهشمندیم لااقل سورسشو قرار بدین (12 سال پیش)
0 0
به عنوان یک پروژه انجامش بدید و یک تاپیک براش ایجاد کردم و در قالب یک کار گروهی به نتیجه برسید. سورسش حدود 10 خط هست اما فکر کنم به اندازه 400 خط وقتتون رو بگیره و بعد با یک بعد جدید از Java آشنا میشید. منتظر نتیجه گرفتن تاپیک هستم. (12 سال پیش)
0 0
در پروژه hangman یادم هست وقتی میخواستید برای اون همه دکمه listener بنویسید از روش تعریف onClick برای دکمه ها استفاده کردید و گفتید که این روش خوبی نیست اما روش درست رو نگفتین ، فکر کنم الان متوجه شدم:)) (12 سال پیش)
0 0
به نظرم اگه با یه کم تغییرات putExtra رو هم بهش اضافه کنیم خیلی بهتر میشه و همه جا کاربرد پیدا میکنه (12 سال پیش)
0 0
می تونید Poly کنید و با یک نام، Signature های مختلف داشته باشه. تو یکیش Bundle پاس بدید که بچسبونه به Intent. این بر عهده خودتون. (12 سال پیش)
0 0
میشه در این مورد بیشتر توضیح بدید یا مرجعی معرفی کنید Poly ، Signature (12 سال پیش)
0 0
polymorphism و signature رو به صورت غیر مستقیم در آموزشهای شیء گرایی توضیح دادم. (12 سال پیش)
0 0
فکر کنم منظورتون اینه که توابع با نام یکسان و با ورودی های مختلف بنویسیم درسته ؟ (12 سال پیش)
پاسخ به سوال 
طاهر  12 سال پیش
+6 0

اضافه شد :

 

class G extendsApplication{
...
public static void startActivity(Class<? extends Activity> clazz) {
Intent intent = new Intent(G.CurrentActivity, clazz);
G.CurrentActivity.startActivity(intent);
}


public static void startActivity(Class<? extends Activity> clazz, Bundle bundle) {
Intent intent = new Intent(G.CurrentActivity, clazz);
intent.putExtras(bundle);
G.CurrentActivity.startActivity(intent);
}
}

و صدا میزنیم  ..

G.startActivity(SomeActivity.class);

و یا ..

Bundle b = new Bundle();
b.putString("sameString", "sameValue");
G.startActivity(ActivityArticle.class, b);

0 0
آفرین ، جواب خوبی بود. فقط bundle درسته و نه bundel (12 سال پیش)
پاسخ به سوال 
uncocoder  12 سال پیش
+5 0

این تاپیک مخصوص MVC نبود اما چرا شد نمی دونم، عیب نداره ادامه بدیم :)

در پاسخ به دوست عزیز آقای حسین زاده:

نکته همینجاست. چرا C نباید به Data دسترسی داشته باشه؟ ما میگیم V باید از C جدا باشه، منطقیه چون قراره Artist طراحیش کنه و فقط می دونه که یک سری متغیر داره و سر جاشون می چینه. یا اینکه در فرمش یک Url رو صدا می زنه و پارامترها رو بهش ارسال می کنه. دیگه کاری نداره که این تو دیتابیس میشینه یا نه. آرتیست کارش مشخص شد. اما کسی که M رو می نویسه چی قراره بدونه؟ اینکه یک سری ورودی داره که قراره رو Data اثر بذاره و یک سری خروجی بده. اینم قبول، اما C چی می خواد؟ اینکه V رو به M وصل کنه. همین! خوب پس یا C اضافه هست یا M . آیا برای وصل کردن V به M نیاز هست یک رابطه دیگه هم باشه. مثل این می مونه که بگیم می خوایم زنجیر لوستر رو به لوستر وصل کنیم، پس یه تیکه دیگه زنجیر می خوایم! نه میشه ته زنجیر رو به لوستر وصل کرد و تکه دیگری از زنجیر نمی خوایم. البته این نظر من بود و ممکنه اشتباه باشه.

پاسخ به سوال 
محمد حسین زاده  12 سال پیش
+7 0

دو حالت داره :

1- تو خیلی تیم های برنامه نویسی تیم دیتابیس جداس و با استفاده از روش Codefirst که فرا گیر شده ، تیم دیتابیس عهده دار نگهداری کد لایه Model میشه

2- جدا سازی منطقی این دو لایه حتی در مواردی که یک تیم روی هر دو لایه کار میکنه برای نگهداری برنامه لازمه. تو این حالت میشه با بررسی نوع خطا ( منطق / دیتا ) لایه مربوطه رو بررسی کرد.

بسته به نوع برنامه و گستردگی تیم هر کدوم از M , C ممکنه به لایه های ریز تر هم تقسیم بشن .

یکی از دلایل اینهمه تقسیم بندی تو محیط های عملیاتی اینه که هر تیمی باید نسبت که کد خودش و باگهاش پاسخگو باشه. این تقسیمات کار تیم دیتابیس و منطق رو هم جدا میکنه پس خطاهای دریافت شده از سوی مشتری هم سریعتر جواب داده میشه.

رفرنس هم که برای دلایل وجود MV* زیاده. ولی تو همه موارد صرف نظر از مدل و ویو حتما بخشی برای منطق جداگانه در نظر گرفته میشه . در MVC : controller و در MVVM : ViewModel و ...

0 0
مرسی پاسخ خوبی بود. حالا بهتر می تونم علت وجود M رو درک کنم. اما احساس می کنم کد نویسی خیلی تکراری میشه. هی از این پاس بدی به اون، اون به اونیکی، بعد اونیکی به اون و بعد اون به این. :) اونیکی = M ، اون = C و این = V چقدر قشنگ توضیح دادم :) (12 سال پیش)
+1 0
حالا جالب تر اینجاس که تو کنترلر شما حق پیاده سازی منطق رو داری، ولی حق فیلتر کردن دیتا رو نداری! لایه سرویس که زیر مجموعه مدل هست میتونه دیتا رو از مدل بگیره فیلتر کنه و به کنترلر بده! اینطوری میشه که اون زنجیر لوستر دیگه تکه تکه میشه. ولی انصافا کارایی خوبی داره! (12 سال پیش)
0 0
استاد شما زیاد پاس بده به این به اون کردید :D، در کل در روش MVC وقتی C نیاز به دیتا داره خودش از M بدون این که شما چیز اضافه بنویسید دیتا رو میگیره ، اگر در M فیلتر خواصی بود مثل رابطه های جداول، فیل های ورودی، نوع و هزاران مورد دیگه روی دیتایی که به C میرسه اعمال میشه مگر اینکه شما بهش بگید دیتای خام میخوام، توی MVC خیلی خیلی خیلی نگهداری نرم افزار ساده تر میشه و خیلی جاها تکرار حذف میشه ... بخدا اگر MVC بد بود بزرگان ازش استفاده نمیکردن ... (12 سال پیش)
0 0
از اساتید و بزرگواران خواهشمندیم ، ما رو هم با این MVC آشنا کنید ، با یکم تحقیق به این لینک رسیدم لینک ، ولی خیلی جامع توضیح ندادن ، برداشت فعلی ام هم از این تاپیک این هست که "دوستان همین مطالب رو هضم کنند کلی پروژه بزرگ میشه باهاشون انجام داد" و "ولی انصافا کارایی خوبی داره!" و "بخدا اگر MVC بد بود بزرگان ازش استفاده نمیکردن" (12 سال پیش)
0 0
A.L.U جان جریان از این قراره که ام وی سی یه نوع منطقه که از روی سه قاعده پیروی میکنه MODEL VIEW CONTROLLERو مزیتش اینه برنامه انعطاف پذیر میشه و هر چی پروژه گسترش پیدا کنه سردرگمی پیدا نمی کنی اسپاگتی خیلی کم میشه مدیریت کامل روی پروژه داری و عیب یابی و سرعت عمل بالاتری پیدا میکنی بزار راحتر بگم که عملکردها درون کنترلر ها ریخته میشه و مشاهدات ویو مثل قالب ها و مدل ها هم پایگاه داده و عملکردهای پایگاه داده تمامی اجزا جدا از هم نوشته میشه ولی قابل استفاده هستن (12 سال پیش)
0 0
دوستان اهل فن یه تایپیک جداگانه برای MVC ایجاد شد . لطفا توضیحات کامل رو در اونجا قرار دهید (12 سال پیش)
0 0
ادامه این بحث به لینک منتقل می شود. مرسی Taher (12 سال پیش)

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