تا اینجا یاد گرفتیم که چطور با فعالیت ها (activities) کار کنیم، اگه یادتون باشه برای شروع فعالیت Dovomi از intent استفاده کردیم، کار مفهوم (intent) اینه که یه عنصری از برنامه تون رو فعال کنه.
دو نوع مفهوم (intent) وجود داره، مفاهیم آشکار و مفاهیم ضمنی یا مجازی.
با مفاهیم آشکار، یک عنصر مشخصی از برنامه رو برای فعال شدن تعیین میکنیم. مثلا میخوایم یه فعالیت(activity) دیگه رو تو برناممون اجرا کنیم، از یه مفهوم آشکار استفاده میکنیم که آشکارا به سیستم بگه میخوام اون فعالیت رو فعال(اجرا) کنم.
مفاهیم ضمنی (که تو پست بعدی بهش میپردازیم) در واقع یک پیام کلی برای سیستم میفرستن : که آیا برنامهای در سیستم عامل این گوشی وجود داره که بتونه این مفهوم رو اجرا کنه؟ اگه وجود داشته باشه لیست این برنامهها به کاربر پیشنهاد میشه و کاربر یکی رو انتخاب میکنه و از این طریق اون چیزی که با مفهوم فرستاده شده (ورودیهای intent) اجرا میشه.
خوب الان میخوایم رو مفاهیم آشکار تمرکز کنیم. برای شروع یه پروژه بسازید با دوتا فعالیت (activitie) که تو فعالیت اصلی (main) یه متنی که قابل نوشتن باشه یعنی کاربر میتونیه توش متن وارد کنه (از توی Text Fields اولی رو انتخاب کنید) و یه دکمه (برای اینکه به فعالیت دوم بره)، فعالیت دوم هم یه فیلد متنی ساده داشته باشه.(حواستون باشه که فعالیت دوم رو هم تو فایل manifest تعریف کنید).
۲٫کاری که با این برنامه میخوایم بکنیم اینه که : کاربر یه متنی رو تو فیلد متنی قابل نوشتن مینویسه و دکمه رو میزنه، فعالیت دوم باز میشه و متنی که نوشته بوده رو نشون میده. یعنی میخوایم یاد بگیریم اطلاعاتی رو از یه فعالیت به فعالیت دیگه منتقل کنیم.
اول به فایل main.java می ریم و یه مرجع(اشارهگر) از دکمه و فیلد متنی میگیریم. با نوشتن این کد
EditText matn = findViewById(R.id.editText1);
یه مرجع از فیلد متنی قابل نوشتنمون میگیریم. خوب بازهم با ctrl+1 خطاهای برنامه رو درست میکنیم. (اینجا کافیه فقط cast انجام بدید.) همین کارو برای دکمه انجام میدیم.
Button d = findViewById(R.id.button1);
و برای دکمه تابع setOnclickListener رو صدا میزنیم تا کارایی که قراره با فشردن دکمه انجام بشه رو تعیین کنیم. با نوشتن این کد :
@Override
public void onClick(View v) {
}
});
۳.الان قصد داریم که یه intent بسازیم، همون طور که قبلا اشاره شد intent یک راه برای فعال کردن جزئی از برنامه است. پس برای اینکه یه نمونه از کلاس Intent بسازیم، مینویسیم Intent و یه اسم براش میذاریم و newاش میکنیم. (با ctrl+space، اون گزینه رو انتخاب میکنیم که مناسبه پاس کردن یه فعالیته -تو تصویر مشخصه-)
startActivity(mafhoom);
۵.خوب تا اینحا دیگه کار ما با Main.java تموم میشه، حالا باید به Dovomi.java بریم و اطلاعاتی که همراه mafhoom فرستاده شده بازیابی کنیم و تو textView نشون بدیم. برای شروع اول یه مرجع از فیلد متنی میگیریم با این کد :
TextView matni = (TextView) findViewById(R.id.textView1);
برای اینکه این فیلد متنی، متن دلخواه ما رو نشون بده باید از تابع setText استفاده کنیم(هرچی به عنوان ورودی بفرستیم رو نشون میده)، برای گرفتن همون متنی رو که توسط mafhoom فرستاده شده، اول باید با getIntent مفهومی که این فعالیت رو اجرا کرده رو به دست بیاریم، و بعد از تابع getExtra برای گرفتن اطلاعات داخل intent استفاده میکنیم، که در واقع تمام اطلاعاتی که بهش داده بودیم رو برمیگردونه. اما ما فقط اون قسمتی از اطلاعاتش رو میخوایم که با کلید “matneVaredShode” مشخص شده (اگرچه در این تمرین قفط همین یدونه رو همراه mafhoom فرستادیم). و چون اون اطلاعاتی که میخوایم از نوع رشته است، از تابع getString استفاده میکنیم و کلید رو بهش میدیم.
matni.setText(getIntent().getExtras().getString(“matneVaredShode”));