Persian Software Engineers – Telegram
Persian Software Engineers
1.9K subscribers
353 photos
14 videos
84 files
303 links
تجربیات شخصی یک مهندس نرم افزار در آلمان‌.
کانال یوتیوب:
https://www.youtube.com/@Dev_Germany
ادمین کانال :
@mohamad_germany
Download Telegram
وبرای اینکه نتیجه را ببینید از منوی بالا Run را بزنید و در آن دوباره گزینه Run را انتخاب کنید:
خب دیدید که تابع درست Override یا بازنویسی شده و خروجی را هم میبینید
حالا برید داخل کلاس A و یک متد دیگر بصورت زیر بسازید:
اندفعه میخواهم نشان بدهم اگر متد تابعی که از آن ارث میبریم را تغییر ندهیم بهش دسترسی داریم اما عینا همانطور که تعریف شده است اجرا میشود. پس داخل کلاس B جای
myb.printing ();
بنویسید:
myb.printing2();
و اجرا بگیرید. میبینید که متد از A دقیقا به ارث رسیده است
مفاهیمی که از جاوا لازم بود را دوره کردیم. حالا برگردیم به اندروید. سر متد Oncreate بودیم که این بحثها پیش آمد. این متد هم برای Activity هست اما مشخص هست که من باید تغییرش بدهم مثلا بگم که این کلاسی که برای آن OnCreate ساختی به کدام layout وصل هست. پس باید تغییرش بدم.
پس کد زیر را بنویسید:
@Override
public void OnCreate(Bundle bdl){}
با Bundle هم که اشنا هستید. یک نوع Bundle تعریف کردم اسمش را هم دلخواه دادم bdl.
حالا کدهای زیر را به متدتان اضافه کنید:

@Override
public void onCreate(Bundle bdl) {
super.onCreate(bdl);
setContentView(R.layout.second);

}
خط اول که مشخص هست همان کاری که Bundle گفتم انجام میدهد را برایش تنظیم کردیم.
خط دومم اکتیویتی ما را به layout دوممان وصل کرده است. اون R هم گفتم فعلا درین حد بدانید که برای صدا زدن ابزارهایی که روی صفحه میگذاریم یا Layout ها از R استفاده میکنیم.

حالا بریم به اکتیویتی اصلی مان یعنی MyActivity و به آن بگیم روی دکمه که زده شد بیاد به SecondActivity.
پس یک دکمه روی Layout main بندازید. ایدیش را هم بگذارید btnSecondPage
برید داخل اکتیویتی مربوط به این صفحه (MyActivity ) و داخل متد OnCreate اش یک onclickListener برای دکمتان بسازید. چون قبلا گفتم اینها را وارد جزییاتش نمیشوم. کد بصورت زیر هست:
که البته خود تعریف دکمه هم توضیحاتی دارد که در جلسات بعد خواهیم پرداخت.
حالا در onClick بنویسید:
Intent myintent = new Intent(MyActivity.this,SeconActivity.class);
این چی هست؟ اگر دقت کنید یک نمونه گرفتیم از موجودیتی به نام Intent که اسمشم دادم myintent
حالا در نمونه گرفتن از کلاس A که داشتیم یادتان باشد میگفتیم
A mya = new A()
و جلوی اسم A پرانتز داشتیم. این پرانتز میتواند با ورودی پر بشود که بسته به کلاستان دارد (بعدا مثال جاواییش را میزنم). اما اینجام دارید میبینید. Intent برای نمونه گرفتن ازش دوتا ورودی میخواهد. چیز سختیم نی داریم به آن میگوییم از کجا میخواهم بروم کجا!
و حالا intent چی هست
Intent ها مثل پیام هایی هستند که با آنها از سیستم اندرویدتان تقاضای کاری را میکنید. در واقع Intent ها وقوع یک رویداد را به اندروید اعلام میکنند. مثلا بخواهیم آدرسی را در مرورگر اندروید باز کنیم یا الان اینجا میخواهیم به صفحه ای برویم.
برای رفتن از یک صفحه به صفحه دیگر intentرا بصورت بالا تعریف میکنیم. که به آن intent صریح هم میگویند.
خب intent را تعریف کردیم حالا باید start بکنیم آن را. کد پایین را زیره کد بالایی بنویسید:
startActivity(myintent);
کد نهایی من بشکل زیر است:
خب برنامتان را همانطور که گفتم اجرا کنید. اما روی دکمه که میزنید برنامه خطای has stopped خواهد داد.
خب برنامتان را همانطور که گفتم اجرا کنید. اما روی دکمه که میزنید برنامه خطای has stopped خواهد داد.
دلیلش چیست؟ قبلا گفتم یک فایلی داریم به اسم manifest که از منوی سمت چپ پیداش میکنید. یک فایل xml هست. این فایل شناسنامه برنامه تان هست. هر کاری بکنید باید به آن بگید. مثلا اکتیویتی تعریف میکنید باید اینجا اعلام کنید. یا مثلا دیدید یک برنامه ای را نصب میکنید اولش اعلام میکند این برنامه به چه چیزایی دسترسی دارد؟ به اینها میگیم permission.
اگه مثلا از وای فای استفاده میکند برنامتان باید اینجا اعلام کنید که برنامه من این قصد را دارد وگرنه برنامتان به خطا میخورد. حالا اینجا کافی هست که توی این فایل xml که یادم دادم کار باهاش رو سر layout ها اسم اکتیویتی که اضافه کردیم رو بگیم.
توجه کنید اکتیویتی اصلی خودش تعریف شده اینجا چون خودش دیفالت بود روی اپلیکیشن. برای همین برنامه بالا آمد. اما موقع ورود به اکتیویتی دوم ینی صفحه دوم خطا داد. الان تگ
application

رو پیدا کنید. شروع و پایانش را که بلدید پیدا کنید. داخلش ببینید یه تگ هست به نام
activity

که اگر نگاه کنید در ادامه اولش نوشته شده
name="MyActivity"