آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

همان طور که می دانید، هنگامی که یک پروژه اندروید جدید در برنامه eclipse می سازیم، یک package با نامی مشخص برای آن انتخاب می کنیم (در همان مراحل ساخت پروژه اندروید) و برنامه اندروید تنها دارای یک package است که تمامی Activity ها و کلاس ها (class) ها در آن قرار می گیرند. مثلا بنده در پروژه اندروید زیر، نام com.kelidestan.com را برای package برنامه اندروید انتخاب کرده ام :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

اکنون فرض کنید که ما قصد داریم که یک پروژه اندروید با تعداد زیادی Activity و کلاس (class) داشته باشیم، بنابراین می توانیم که برای مدیریت بهتر Activity ها و کلاس ها (class)، یک یا چند package دیگر برای پروژه اندروید بسازیم تا تعدادی از Activity ها و کلاس ها (class) در آنها قرار بگیرند. مثلا فرض کنید که بخشی از برنامه اندروید، برای دانلود فایل از اینترنت می باشد، بنابراین بنده تصمیم می گیرم که یک package با نام com.kelidestan.download بسازم و تمامی Activity ها و کلاس های (class) مرتبط با دانلود فایل را در آن قرار بدهم.

برای ساخت یک package جدید برای پروژه اندروید، ابتدا بر روی نام پروژه اندروید در قسمت Package Manager در برنامه eclipse ، با موس، کلیک سمت راست نموده و گزینه New و سپس گزینه Package را انتخاب می کنیم :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

پنجره ای به شکل زیر نمایش داده می شود :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

نام package جدیدی که می خواهیم ساخته شود را در قسمت Name نوشته و بر روی گزینه Finish کلیک می کنیم. package جدید در پروژه اندروید ساخته می شود :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

خوب اکنون که دو package در پروژه اندروید داریم، انتظارمان این است که برای هر کدام که قصد داریم یک Activity یا یک کلاس (class) جدید بسازیم، باید بر روی همان package ، با موس، کلیک سمت راست نموده و ابتدا گزینه New و سپس گزینه مربوط به ساخت Activity یا کلاس (class) را انتخاب نماییم، اما متاسفانه نتیجه، آن چیزی که فکر می کنیم نیست، یعنی اگر شما مراحل را برای package با نام com.kelidestan.download انجام بدهید، Activity یا کلاس (class) جدید، برای com.kelidestan.com ساخته می شود. این مورد را با مثال شرح می دهیم و همچنین می گوییم که چگونه Activity یا کلاس جدید را بین package های مختلف، جابجا کنید.

به عنوان مثال، من قصد دارم که برای package با نام com.kelidestan.download ، یک Activity جدید با نام DownlodHandler بسازم. برای این منظور، بر روی com.kelidestan.download ، با موس، کلیک سمت راست نموده و ابتدا گزینه New و سپس گزینه Other را انتخاب می کنم :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

پنجره ای به شکل زیر نمایش داده می شود :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

گزینه Android Activity را انتخاب نموده و سپس بر روی دکمه Next کلیک می کنیم. صفحه زیر نمایش داده می شود :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

گزینه Blank Activity که برای ساخت یک Activity ساده به کار می رود را انتخاب نموده و بر روی دکمه Next کلیک می کنیم.

در صفحه بعدی، نام مورد نظرمان برای Activity را در قسمت Activity Name نوشته و نام مربوط به فایل xml متناظر برای لایه گرافیکی Activity را نیز در قسمت Layout Name می نویسیم :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

بر روی گزینه Finish کلیک می کنیم تا Activity و فایل xml متناظر با آن ساخته شود :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

همان طور که قبلا گفته بودم، بر خلاف انتظار ما، Activity جدید برای package با نام com.kelidestan.com ساخته شده است. بنابراین اکنون باید آن را به package با نام com.kelidestan.download منتقل کنیم. برای این منظور، ابتدا بر روی فایل DownloadHandler.java ، با موس، کلیک سمت راست نموده و سپس گزینه Copy را انتخاب می کنیم. آنگاه بر روی package با نام com.kelidestan.download ، با موس، کلیک سمت راست نموده و گزینه Paste را انتخاب می کنیم تا یک کپی از فایل DownloadHandler.java در آن قرار بگیرد (اکنون دو تا فایل DownloadHandler.java داریم) :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

فایل DownloadHandler.java برای package با نام com.kelidestan.com را حذف می کنیم (با موس، بر روی package ، کلیک سمت راست نموده و گزینه Delete را انتخاب می کنیم) :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

اما تنها با یک copy و paste ساده، کار انتقال تمام نمی شود، زیرا هنگام ساخت Activity ، در فایل AndroidManifest.xml از پروژه اندروید، نام package مربوط به آن درج شده است و بنابراین باید فایل AndroidManifest.xml را باز کرده و نام package مربوط به آن را تغییر بدهیم :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

کدهای فایل AndroidManifest.xml به صورت زیر می باشد :


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.kelidestan.com"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.kelidestan.com.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.kelidestan.com.DownloadHandler"
            android:label="@string/title_activity_download_handler" >
        </activity>
    </application>

</manifest>

مشاهده می کنید که کد مربوط به Activity با نام DownloadHandler ، به صورت زیر نوشته شده است :


<activity
    android:name="com.kelidestan.com.DownloadHandler"
    android:label="@string/title_activity_download_handler" >
</activity>

قبل از نام DownloadHandler ، عبارت com.kelidestan.com نوشته شده است، اما ما باید آن را به عبارت com.kelidestan.download که همان package جدید است، تغییر بدهیم :


<activity
    android:name="com.kelidestan.download.DownloadHandler"
    android:label="@string/title_activity_download_handler" >
</activity>

علاوه بر نکته ای که گفتیم، همان طور که مشاهده می کنید، برای فایل DownloadHandler.java ، یک علامت خطا نمایش داده شده است، آن را باز می کنیم تا ببینیم مشکل از چیست :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

همان طور که مشاهده می کنید، منابعی که در کلاس R مشخص می شوند را نتوانسته است تشخیص بدهد، دلیل آن هم واضح می باشد، زیرا وقتی ما تنها حرف R را نوشته ایم، در واقع اشاره به کلاس زیر دارد :


com.kelidestan.com.R

زیرا نام package اصلی برنامه اندروید، com.kelidestan.com می باشد، اما چون Activity با نام DownloadHandler.java در package با نام com.kelidestan.download قرار گرفته، بنابراین نمی تواند کلاس R را بیابد. برای حل این مشکل، باید کلاس com.kelidestan.com.R را وارد (import) کنیم، یعنی باید در ابتدای فایل، کد زیر نوشته شود :


import com.kelidestan.com.R;

بنابراین کدها را به صورت زیر تغییر می دهیم تا دیگر هیچ خطایی نمایش داده نشود :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید
نکته

شما با کلیک بر روی علامت کوچک نمایش داده شده در کنار نام package ها، می توانید تعیین کنید که Activity ها و کلاس های (class) موجود در آن package ، نمایش داده شوند یا خیر :

ساخت package های جدید برای مدیریت بهتر Activity ها و کلاس ها (class) و همچنین شرح چگونگی ساخت یک Activity جدید برای package ای غیر از package اصلی برنامه اندروید، در برنامه eclipse ، در برنامه نویسی اندروید

مثلا وقتی که با Activity ها و کلاس های یک package کار نمی کنیم، با کلیک بر روی علامت کنار آن، تعیین می کنیم که موارد مربوط به آن نمایش داده نشوند (قسمت Package Explorer در برنامه eclipse ، شلوغ نشود).

بنابراین در این مبحث شرح دادیم که چگونه می توان یک یا چند package جدید برای پروژه اندروید ساخت تا مدیریت Activity ها و کلاس ها (class) ساده تر شود. پس Activity ها و کلاس هایی (class) که به هم مرتبط هستند را در package های جداگانه قرار بدهید تا مثلا در یک پروژه اندروید با 20 یا 30 Activity و کلاس (class)، مدیریت آنها ساده باشد.

نویسنده علیرضا گلمکانی
شماره کلید 2670
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 1 1 0
ماندانا
۱۳۹۵/۱۱/۲۲
۱۹:۴۲

سلام ....چیزی نیود که یاد بگیرم
   به درد بخور نبود....

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)