ارسال یک مقدار تنها (رشته یا عدد یا ...) از یک Activity به Activity دیگر، در برنامه نویسی اندروید
زمانی که کاربر، از یک Activity به یک Activity دیگر وارد می شود، ممکن است که بخواهیم یک سری اطلاعات را از Activity قبلی، به Activity جدید وارد کنیم (مثلا مقادیر انتخاب شده توسط کاربر). در این مبحث، نحوه ارسال یک مقدار از یک Activity به Activity دیگر را شرح می دهیم (چنانچه قصد دارید که یک آرایه (Array) را ارسال کنید، آموزش شماره 3018 را بخوانید).
برای ارسال مقدار از Activity فعلی، روش putExtra به کار می رود. بهتر است ابتدا شکل کلی آن را بیان کنیم و بعد به صورت جداگانه، شیوه استفاده از آن برای انواع متغیرها (رشته، عدد و ...) را شرح بدهیم. شیوه کلی استفاده از روش putExtra ، به صورت زیر می باشد :
که در آن، intent ، یک شیء (object) از نوع Intent می باشد (یک شیء که از کلاس Intent ساخته شده)(که از آن برای رفتن به Activity بعدی استفاده می کنیم). key باید به صورت یک رشته باشد که نامی منحصربفرد (انتخاب به دلخواه) برای دریافت مقدار در Activity بعدی می باشد (زیرا ممکن است چندین مقدار را ارسال کنیم و بنابراین باید هر کدام، یک نام منحصربفرد (key) داشته باشند تا بتوانیم آنها را به صورت جداگانه دریافت کنیم). value نیز همان مقداری است که می خواهیم به Activity بعدی ارسال شود.
ارسال یک مقدار از نوع رشته (String) :
درون Activity اول، کدهای زیر را می نویسیم :
String myVariable_1 = "value";
intent.putExtra("key_name", myVariable_1);
startActivity(intent);
دقت کنید که NewActivity ، نام Activity جدیدی است که وارد آن خواهیم شد و اطلاعات به آن ارسال می گردد.
سپس درون Activity دوم، باید کدهای زیر را بنویسیم :
if (extras != null) {
String myVariable_2 = extras.getString("key_name");
}
البته شرط if را می توان برداشت. در رشته (String) با نام myVariable_2 ، مقدار مورد نظرمان ذخیره شده است.
اگر مقدار مورد نظر، یک عدد بوده است (یعنی یک عدد را در رشته ذکر کرده ایم، نه اینکه از جنس int باشد، برای int ، در ادامه توضیحاتی داده شده است)، می توانید از کد زیر، برای تبدیل رشته (string) به عدد، استفاده کنید :
قبل از دریافت مقدار، می توانیم چک کنیم که آیا اصلا مقداری با آن نام ارسال شده است یا خیر (با دستور if) :
if (extras != null) {
if(extras.containsKey("key_name")){
String myVariable_2 = extras.getString("key_name");
}
}
ارسال یک مقدار از نوع عدد (int) :
درون Activity اول، کدهای زیر را می نویسیم :
int myVariable_1 = 1;
intent.putExtra("key_name", myVariable_1);
startActivity(intent);
دقت کنید که NewActivity ، نام Activity جدیدی است که وارد آن خواهیم شد و اطلاعات به آن ارسال می گردد.
سپس درون Activity دوم، باید کدهای زیر را بنویسیم :
if (extras != null) {
int myVariable_2 = extras.getInt("key_name");
}
البته شرط if را می توان برداشت. در متغیر با نام myVariable_2 (که از نوع int می باشد)، مقدار مورد نظرمان ذخیره شده است.
ارسال یک مقدار از نوعی غیر از رشته (String) یا عدد (int) :
همان طور که مشاهده کردید، در Activity دوم، برای دریافت رشته (String)، از روش getString و برای دریافت عدد (int)، از روش getInt استفاده شد. بنابراین برای هر نوع متغیر، باید تنها روش (method) مربوط به آن را بدانیم. برای پیدا کردن این روش، در برنامه eclipse ، نشانگر موس را بعد از عبارت extras.get برده (کلیک می کنیم تا نشانگر در آنجا قرار بگیرد) و کلیدهای Ctrl و Space را به صورت همزمان از کیبورد فشار می دهیم تا تمامی روش های قابل انتخاب، نمایش داده شوند :



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


سلام.
کد زیر را فراموش کردید :


مرسی ادمین جان


سلام شما توی دستور کدی که دادید فقط میشه یک متغیر رو به اکتیویتی بعد فرستاد با درستور StartActivity(intent) حالا سوال اینجاست اگه بخوام دو یا بیشتر متغیر رو بفرستم باید چیکار کنم همون طور که میدونید با این کد نمیشه این کارو کرد .
با تشکر


سلام.
می توانید یک آرایه (Array) (از نوع رشته یا عدد یا ...) را ارسال کنید. برای این منظور، کلید زیر را بخوانید :


سلام ادمین عزیز
من در اکتیویتی اول و دومم تعدادی عدد و متن از کاربر گرفتم و میخوام اون هارو ب اکتیویتی سوم انتقال بدم
از روش آرایه استفاده کردم و هنگام ساخت آرایه به جای عدد ها نام متغیر هامو زدم.
حالا تو اکتیویتی سوم میخوام روی اعدا اعمال ریاضی انجام بدم چجوری میتونم به متغیر هام دسترسی داشته باشم؟


سلام.
با توجه به اینکه با اطلاعات موجود در چند Activity سر و کار دارید، توصیه می شود که از ذخیره اطلاعات از طریق SharedPreferences استفاده نمایید تا دیگر ترتیب رفتن به Activity ها و تعداد آنها مهم نباشد :


سلام
من در اکتیویتی دوم زمانیکه مقدار int را در قسمتی دیگر دریافت کنم int دریافت شده را پیدا نمی کند اینهم کد هاش ممنون میشم کمکم کنید


سلام من میخوام یک کدی بنویسم که تو اکتیویتی اول یک تصویر تصادفی نمایش داده بشه و بعد در اکتیویتی دوم با دستور if بگه که اگه مثلا تصویر x نمایش داده شد فلان کارو بکنه فقط دستو if رو لازم دارم ممنون میشم که کمکم کنید.


فکر میکنم باید تصاویرتون رو بصورت آرایه ای از int تعریف کنید تا بتونید بهش دسترسی پیدا کنید


salam , kheyli mamnoon az amoozeshay khoobetoon
age bekhaym ye tasviro enteqal bedim be activity jadd , az che methodi bayad estefade kard ?
amoozeshi darin too site dar rabete ba qazie ?


سلام.
ما در پروژه اندروید، به یک شکل استاندارد، عکس ها را تعریف می کنیم (در پوشه های drawable) و برای ارجاع به آنها، یک عبارت مخصوص به هر عکس داریم (بر اساس نام عکس).
بنابراین شما عبارت مربوط به عکس مورد نظر (یا فقط نام آن یا یک شماره متناظر با آن) را به صورت رشته (string) به Activity مورد نظر (Activity دوم) ارسال کنید و سپس بر اساس آن، در Activity دوم، عکس را شناسایی کرده و کدهای مورد نظرتان را برای آن اجرا نمایید (نیازی به ارسال اطلاعات اصلی عکس (خود عکس) نمی باشد و تنها باید عبارتی را بفرستیم که بر اساس آن بتوانیم عکس را شناسایی کنیم).
این مورد، برای عکس های قرار گرفته در پوشه assets و یا عکس های قرار گرفته در اینترنت (با آدرس URL) و ... نیز صدق می کند و برای هر حالت، تنها باید یک آدرس از عکس، به Activity دوم ارسال شود.
ممکن است بر اساس نوع تعریف عکس، نیاز باشد که در Activity دوم، رشته (String) دریافت شده به نوع دیگری از متغیرها تبدیل شود (مثلا به int یا ...) تا برای اجرای کدها مناسب باشد.


سلام
من یک برنامه اندرویدی ساختم که با کلیک بر روی یک باتن صفحه نصب یک برنامه اندرویدی رو بیاره ونصب کنه ولی هر کاری میکنم انجام نمیشه چجوری باید ارجاش بدم


عالی بود
میخواستم از یک اکتیویتی به اکتیویتی دوم برم و یک نوشته یا عدد را در ادیت تکس بنویسم
ممنون ادمین جان


سلام.
برای نوشتن یک عبارت در EditText ، کلید زیر را بخوانید :
و اگر قصد دارید که یک مقدار (رشته یا عدد یا ...) را از یک Activity به Activity دیگر ارسال نمایید، کلید زیر را بخوانید (همین کلید فعلی) :
بنابراین ابتدا مقدار مورد نظر را از یک Activity به Activity دیگر ارسال می کنید و سپس در کدهای Activity دوم، کد مربوط به نمایش آن مقدار در EditText اجرا می گردد.


سلام خسته نباشید
برای اینکه بخوام از طریق یک اکتیوتی تکست های موجود در اکتیوتی دیگه رو تغییر بدم باید از چه کدی استفاده کنم؟؟
ممنون میشم کمک کنید


سلام.
مقادیر مورد نظرتان را توسط SharedPreferences در برنامه اندروید ذخیره کنید و بنابراین می توانید از همه Activity ها به آن مقادیر دسترسی داشته باشید و از همه Activity ها، آن مقادیر را تغییر دهید :


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