ارسال یک آرایه (Array) (از نوع رشته یا عدد یا ...) از یک Activity به Activity دیگر، در برنامه نویسی اندروید
در آموزش شماره 236 ، چگونگی ارسال یک مقدار تنها (رشته یا عدد یا ...) از یک Activity به Activity دیگر را شرح دادیم. اکنون قصد داریم که چگونگی ارسال یک آرایه (Array) (از نوع رشته یا عدد یا ...) از یک Activity به Activity دیگر را شرح بدهیم.
برای ارسال مقدار از Activity فعلی، روش putExtra به کار می رود. بهتر است ابتدا شکل کلی آن را بیان کنیم و بعد به صورت جداگانه، شیوه استفاده از آن برای انواع متغیرها (رشته، عدد و ...) را شرح بدهیم. شیوه کلی استفاده از روش putExtra ، به صورت زیر می باشد :
xxxxxxxxxx
intent.putExtra(key, value);
که در آن، intent ، یک شیء (object) از نوع Intent می باشد (یک شیء که از کلاس Intent ساخته شده)(که از آن برای رفتن به Activity بعدی استفاده می کنیم). key باید به صورت یک رشته باشد که نامی منحصربفرد و انتخابی برای دریافت مقدار در Activity بعدی می باشد (زیرا ممکن است چندین مقدار را ارسال کنیم و بنابراین باید هر کدام، یک نام منحصربفرد (key) داشته باشند تا بتوانیم آنها را به صورت جداگانه دریافت کنیم). value نیز همان مقداری است که می خواهیم به Activity بعدی ارسال شود.
ارسال یک آرایه (Array) از نوع رشته (String) :
درون Activity اول، کدهای زیر را می نویسیم :
xxxxxxxxxx
String myArray_1[] = {"ali","hamed","reza"};
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
intent.putExtra("key_name", myArray_1);
startActivity(intent);
دقت کنید که NewActivity ، نام Activity جدیدی است که وارد آن خواهیم شد و اطلاعات به آن ارسال می گردد.
سپس درون Activity دوم، باید کدهای زیر را بنویسیم :
xxxxxxxxxx
Bundle extras = getIntent().getExtras();
if (extras != null) {
String[] myArray_2 = extras.getStringArray("key_name");
}
البته شرط if را می توان برداشت. در رشته (String) با نام myVariable_2 ، مقدار مورد نظرمان ذخیره شده است.
قبل از دریافت مقدار، می توانیم چک کنیم که آیا اصلا مقداری با آن نام ارسال شده است یا خیر (با دستور if) :
xxxxxxxxxx
Bundle extras = getIntent().getExtras();
if (extras != null) {
if(extras.containsKey("key_name")){
String[] myArray_2 = extras.getStringArray("key_name");
}
}
ارسال یک آرایه (Array) از نوع عدد (int) :
درون Activity اول، کدهای زیر را می نویسیم :
xxxxxxxxxx
int myArray_1[] = {1,2,3};
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
intent.putExtra("key_name", myArray_1);
startActivity(intent);
دقت کنید که NewActivity ، نام Activity جدیدی است که وارد آن خواهیم شد و اطلاعات به آن ارسال می گردد.
سپس درون Activity دوم، باید کدهای زیر را بنویسیم :
xxxxxxxxxx
Bundle extras = getIntent().getExtras();
if (extras != null) {
int[] myArray_2 = extras.getIntArray("key_name");
}
البته شرط if را می توان برداشت. در متغیر با نام myVariable_2 (که از نوع int می باشد)، مقدار مورد نظرمان ذخیره شده است.
ارسال یک آرایه (Array) از نوعی غیر از رشته (String) یا عدد (int) :
همان طور که مشاهده کردید، در Activity دوم، برای دریافت رشته (String)، از روش getStringArray و برای دریافت عدد (int)، از روش getIntArray استفاده شد. بنابراین برای هر نوع متغیر، باید تنها روش (method) مربوط به آن را بدانیم. برای پیدا کردن این روش، در برنامه eclipse ، نشانگر موس را بعد از عبارت extras.get برده (کلیک می کنیم تا نشانگر در آنجا قرار بگیرد) و کلیدهای Ctrl و Space را به صورت همزمان از کیبورد فشار می دهیم تا تمامی روش های قابل انتخاب، نمایش داده شوند :
