فراخوانی تابع
سلام .... من دوتا تابع ان کلیک دارم ...ک میخوام داخل تابع دوم اولی رو فراخوانی کنم ...میشه راهنمایی کنید؟/
شما باید لیستنر هارو بشناسید و بدونید که به چه صورت کار میکنند ، لیستنر ها باید صدا زده بشوند که کد های درون اونها اجرا بشه ، برای یک Button لیستنر اختصاصی وجود داره که صدا زده شدنش تنها به وسیله کلید روی صفحه گوشی هست و حتما باید روی عنصری از جنس View کلید بشه و اون View حتما یک ID داشته باشه و این ایدی باید با ایدی که برای لیستنر وجود داره یکی باشه ،
شما اگر میخواید دقیقا لیستنر اختصاصی برای View هارو صدا بزنید باید کدهاتون رو تغییر بدید و کمی لیستنرها رو اختصاصی تر کرد و کمی تغییر بدید ولی روش های زیر رو بهتون پیشنهاد میکنم ، بجای اینکه بخواید از لیستنر ها استفاده کنید یک لیستنر بسازید !
شما دوتا تابع onClickListener دارید ،که روی دوتا ویو کاملا مجزا از هم هست با ایدی اونها با هم فرق داره
میخواید با تا زمانی که روی Btn_1 کلیک نشده ، Btn_2 کار نکنه
به شکل زیر کد بزنید :
booleqn canClick = false;
onCreate(){
btn_1.onClickListener(){
canClick = true;
}
btn_2.onClickListener(){
if(canClick ){
canClick = false;
// . . .
}
}
}
اگر یک سری کد دارید که برای Btn_2 نوشته شده و میخواید با کلید روی Btn_1 هم کارهای Btn_2 هم انجام بشه باید بصورت زیر کد بنویسید :
onCreate(){
btn_1.onClickListener(){
someTask_1();
someTask_2();
}
btn_2.onClickListener(){
someTask_2();
}
}
private void someTask_1(){
Log.i("LOG","BTN_1");
}
private void someTask_2(){
Log.i("LOG","BTN_2");
}
پیشنهاد میکنم تا میتونید از متد ها استفاده کنید و اصلا کدهای خودتون رو توی لیستنرهای مربوط به کلیک شدن و یا توی OnCreate ننویسید ، همیشه برای هرکاری متد استفاده کنید حتی اگر قراره Log بفرستید هم از متد استفاده کنید :
private void printLog(String key, String text) {
Log.i(key, text);
}
printLog("LOG","TEST");
یکی از کاربردهای متد به روش بالا این هست که مثلا << شما بعد از اتمام پروژه نیاز ندارید بگردید تمام لاگ هارو کامنت کنید ، فقط لاگ موجود توی این متد رو کامنت میکنید :
یکی دیگه از موارد مفید در استفاده از متد ها : برای مثال شما همیشه یک دکمه دارید که یک کار مشخص رو توی برنامه براتون انجام میده پس همیشه متد اماده برای اون کار رو داشته باشید :
private void BrowseFile(View btn) {
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, 200);
}
});
}
و همیشه بصورت زیر استفاده کنید :
Button btnBrowse = (Button) findViewById(R.id.btnBrowse);
BrowseFile(btnBrowse);
اگر مشکلتون همچنان حل نشده بیشتر راهنمایی کنید ، فکر نمیکنم کاری باشه که با روش های اوصولی برنامه نویسی و الگوریتم نویسی صحیح انجام نشه !
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .