انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
عدم درک چگونگی فراخوانی بعضی از روش ها (methods) در کد برنامه اندروید

عدم درک چگونگی فراخوانی بعضی از روش ها (methods) در کد برنامه اندروید

#4
(۱۳۹۳/۱۲/۲۰, ۱۱:۲۱ ق.ظ)'yousefesi' نوشته: متد onDraw رو کی فراخونی می کنه ؟
ورودی  اون رو (canvas) کی می ده؟

 

هنگام تعریف کلاس DemoView ، کد خط اول را ببینید :

کد پی‌اچ‌پی:
private class DemoView extends View

کلاس DemoView از توسعه (extends) کلاس View ساخته می شود. بنابراین بخشی از کدهای اجرایی، در خود کلاس View می باشد. یعنی کلاس View ، خودش یک روش (method) با نام onDraw دارد که ما هنگام تعیین کدهای کلاس DemoView ، تنها روش onDraw مربوط به کلاس پایه View را Override کرده ایم. این موضوع را از علامت گذاری Override@ می توان متوجه شد :

کد پی‌اچ‌پی:
@Override protected void onDraw(Canvas canvas) {  
     
super.onDraw(canvas); 

بنابراین فراخوانی روش onDraw  را باید در کدهای کلاس پایه View بیابید.

------------------------------------------------------------------

برای درک بهتر این موارد، نیازی نیست که حتما کدهای خاصی را بررسی کنیم، بلکه بررسی خود کدهای یک Activity ساده و روش های (method) آن، همین نکات را خواهد داشت :

کد پی‌اچ‌پی:
package com.kelidestan.com;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class 
NewActivity extends Activity {

        @
Override
        
protected void onCreate(Bundle savedInstanceState) {
                
super.onCreate(savedInstanceState);
                
setContentView(R.layout.new_activity);
                
                
// your codes
        
}

        @
Override
        
protected void onPause() {
                
// TODO Auto-generated method stub
                
super.onPause();
                
                
// your codes for pause
        
}
        


ممکن است شخصی با دیدن کدهای بالا، بگوید که چرا به محض اجرای کدهای Activity ، روش onCreate اجرا می شود، ولی روش onPause تنها زمانی اجرا می شود که Activity به حالت pause رفته باشد ؟
پاسخ این است که باید کدهای کلاس پایه، که در اینجا کلاس Activity می باشد، را بررسی کنیم که در آنجا تعیین شده که هر روش (method) چه زمانی اجرا شود. زیرا این کلاس (در واقع این Activity که ساخته ایم، یا بهتر بگوییم، این شیء (object) که از کلاس Activity ساخته ایم)، بر اساس توسعه (extends) کلاس Activity می باشد :

کد پی‌اچ‌پی:
public class NewActivity extends Activity 

------------------------------------------------

چون در مورد Override صحبت شد، بهتر است کمی در مورد آن توضیح بدهیم.
ابتدا باید تذکر داده شود که عبارت زیر، یک نوع علامت گذاری برای compiler است :

کد پی‌اچ‌پی:
@Override 

یعنی به compiler می گوید که دارم یک روش (method) را Override می کنم، بنابراین اگر compiler روشی با آن نام را نیابد، به ما یک اخطار می دهد (زیرا باید در کلاس پایه، یک روش با آن نام وجود داشته باشد تا آن را Override کنیم).
اما حالا شرح بدهیم که اصلا خود Override کردن چیست. 
Override کردن method ، یعنی اینکه ما می خواهیم یک روش (method) موجود در کلاس پایه (کلاسی که از آن، روش ها را به ارث برده ایم) را با کدهای متفاوتی اجرا کنیم، یعنی کدهای اجرایی آن، مثل روش موجود در کلاس پایه نباشد، بلکه یک سری کد دیگر اجرا شود. برای این منظور، روش مورد نظر را دوباره کدنویسی می کنیم، یا در اصطلاح، Override می کنیم (مطابق روندی که در مثال های قبلی بود).


bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط yousefesi ، داش بهروز ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پیام‌های این موضوع
RE: عدم درک چگونگی فراخوانی بعضی از روش ها (methods) در کد برنامه اندروید - توسط admin - ۱۳۹۳/۱۲/۲۰, ۰۴:۱۲ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان