ورود

View Full Version : گرفتن مقدار از یک تابع void در DatePicker



slr560
شنبه 04 مرداد 1393, 01:53 صبح
سلام دوستان . یه مشکل به ظاهر ساده دارم

من میخوام یه DatePicker به صورت دیالوگ نمایش داده بشه و تاریخی که وارد میشه رو بگیرم. به این صورت عمل کردم.
ابتدا وقتی روی دکمه کلیک میشه showDialog اجرا میشه .

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.date_reserve:
showDialog(DATE_DIALOG);

}
}
و بعد از اون تابع override شده onCreateDialog اجرا میشه

@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG:
return new DatePickerDialog(this, onDateSetListener, yr, month, day);
}
return null;
}

حالا datePicker نمایش داده میشه و مقدارشو با استفاده از تابع زیر میگیرم

DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {


yr = year;
month = monthOfYear;
day = dayOfMonth;


String date_reserve = yr + "/" + (month + 1) + "/" + day;
}
};

تا اینجای کار همه چی درسته و کار میکنه . مشکل من اینه که بعد از اجرای این دستورات تاریخ میره توی استرینگ date_reserve و دخیره مییشه. چجوری این تاریخ رو بگیرم و توی تابع اولی onClick که نوشتم برش گردونم؟؟؟؟ واسه محاسبات بعدی
مشکل اینجاس که تابع void هست و override شده . کاریشم نمیشه کرد.
یه متغییر در سطح کلاسم تعریف کردم و مقدارشو مساوی با date_reserve قرار دادم . ولی بعد از اینکه توی قسمتای برنامه میخوام ازش استفاده کنم گیر بهش میده.
چجوری date_reserve رو مقدارشو بگیرم و از تابع ببرمش بیرون؟

smemamian
شنبه 04 مرداد 1393, 02:02 صبح
سلام
توی جاوا چیزی به نام اشاره گر یا ارسال با مرجع نداریم پس:

- متغییر global در نظر بگیرید.
یا
- متغییر static در نظر بگیرید.

slr560
شنبه 04 مرداد 1393, 02:09 صبح
سلام
توی جاوا چیزی به نام اشاره گر یا ارسال با مرجع نداریم پس:

- متغییر global در نظر بگیرید.
یا
- متغییر static در نظر بگیرید.

یعنی date_reserve رو در سطح کلاس به صورت public و استاتیک تعریف کنم ؟

smemamian
شنبه 04 مرداد 1393, 02:15 صبح
یعنی date_reserve رو در سطح کلاس به صورت public و استاتیک تعریف کنم ؟

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

slr560
شنبه 04 مرداد 1393, 02:22 صبح
اگه تمامی کدها در یک کلاس تعریف میشه و مقدار رو فقط در همون کلاس نیاز دارید فقط به قول خودتون public تعریف کنید.
اگر کدها در کلاس های دیگری است یا مقدار رو در کلاس های دیگه هم نیاز دارید به صورت public static تعریف کنید.

ممنون دوست عزیز
به صورت public تعریف کردم و مشکل حل شد