اطلاعیه

Collapse
No announcement yet.

آموزش برنامه نویسی اندروید

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    آموزش برنامه نویسی اندروید

    سلام.
    راستش دیدم انجمن اندروید خیلی خالیه حتی یه صفحه کامل هم موضوع توش نیست با اینکه توی این صنعت استفاده از چیزایی مثل اندروید یا ... خیلی خیلی میتونه کاربردی باشه.
    برای همین تصمیم گرفتم این تاپیک رو ایجاد کنم.

    یه چیز دیگه هم اینکه سعی میکنم مبنای آموزش ها رو چیزایی قرار بدم که به درد دوستان بیشتر بخوره و بتونند ازش برای انجام پروژه هاشون استفاده کنند.

    این پست اول رو میزاریم برای لیست لینک آموزش ها و توی پست های بعد خود آموزش هارو قرار میدیم. سوالات مربوط به خود آموزش هارو همینجا بپرسید ولی لطفا برای سوالات دیگه تاپیک جدا بزنید تا برای افراد دیگه هم راحت قابل دسترسی باشه.

    1. آماده سازی

    2. اولین برنامه

    3. Activity و Intent ها بخش اول

    4. Activity و Intent ها بخش دوم

    5. Life Cycle اکتیویتی ها

    6. ذخیره اطلاعات - استفاده از Shared Preference

    7. استفاده از ListView

    8. اختصاصی سازی ListView

    9. استفاده از سنسور شتاب سنج

    دیگر مطالب :

    ایجاد شبیه ساز پرسرعت

    تست برنامه روی دستگاه واقعی



    غفلت از يار, گرفتار شدن هم داد
    از شما دور شدن, زار شدن هم دارد
    هرکه از چشم بي افتاد, محلش ندهند
    عبد آلوده شدن, خوار شدن هم دارد
    عيب از ماست, که هر سال نمي بينيمت چشم بيمار شده, تار شدن هم دارد ...

    #2
    پاسخ : آموزش برنامه نویسی اندروید

    بسم الله الرحمن الرحیم

    1. آماده سازی

    اول از هر چیز نیاز داریم تا محیط برنامه نویسی رو آماده کنیم. و میتونیم یک شبیه ساز هم برای تست کار ها ایجاد کنیم.

    برای شروع کار به چند تا چیز نیاز داریم که باید اونارو دانلود کنیم.

    1. JDK : این مربوطه به جاوا هست و مخفف Java Developer Kit هست . کامپایلر و .... جاوا توی این بسته قرار داره و مخصوص برنامه نویسان هست. برای اجرای برنامه های جاوا JRE یا Java Runtime کافیه که البته این بسته توی JDK هست. برای دانلود یا باید به سایت جاوا برید که تحریمه و اشکالی نداره میتونید از اینجا دانلود کنید (اینجا چند نسخه رو داره که شما نسخه JDK 7 رو دانلود کنید. اگه سیستمتون 64 بیتی هست توصیه میکنم هم نسخه 32 بیتی و هم 64 بیتی رو نصب کنید و یا فقط 32 بیت رو دانلود و نصب کنید)

    2. Android SDK : کتابخونه ها و شبیه ساز و .... توی این بسته قرار داره. همینطور یک نسخه ویرایشگر Ecilips مخصوص اندروید. برای دانلود میتونید به سایت رسمی اندروید مراجعه کنید ولی چون ما تون ایران حقوق بشر رو رعایت نمیکنیم و با اسراعییل حقوق بشر را در سطح بین الملل به خصوص برای کودکان غزه ایجاد نمیکنیم تحریم هستیم. ولی اون رو هم میتونید از اینجا دانلود کنید (اینجا با توجه به اینکه 64 بیتی هستید یا 32 بیتی نسخه برنامه اصلی رو که دانلود کنید کافیه که حدود 350 مگ هست. ولی اگه مایل بودید میتونید بجای اون نسخه با پکیج های کامل رو دانلود کنید که 5 گیگ هست حدودا. فرقی هم در حین کار و خروجی نداره تقریبا ولی با پکیج های کامل میتونید همه نسخه های اندروید رو که توی ان پکیج ها باشه روی سیستم عاملتون شبیه سازی کنید, البته اگه نسخه اصلی که حدود 350 مگ هست رو هم دانلود کنید میتونید بعد پدیتش کنید و بقیه پکیج ها رو دانلود کنید)

    این دو تا رو اگه دانلود کنید دیگه به چیزی اضافه نیاز ندارید. ولی یه برنامه دیگه هم هست که میتونه خیلی کمکتون کنه توی کیفیت شبیه ساز. فعلا ادامه میدیم.

    بعد از اینکه دانلود تموم شد و JDK رو نصب کردید و SDK هم توی هاردتون قرار دادید میتونید کارو شروع کنید.

    فایل مربوط به اندروید SDK که دانلود کردید احتمالا شامل یک فایل به نام SDK Manager.exe و یک پوشه به نام sdk و یک پوشه به نام eclipse باشه ( احتمالا که میگم به خاطر اینه که نسخه من یکیم قدیمی تره شاید یه چیزایی خیلی کوچیک مثل جای اینا فرق داشته باشه. ولی تو کار اصلی مشکلی ان شاءالله پیش نمیاد :read
    فایل SDK manager رو کلیک کنید تا باز شه (ممکنه یه صفحه سیاه بیاد و بره و چند ثانیه ای طول بکشه تا پنجره رو به نمایش دربیاره )
    یه همچین پنجره ای بالا میاد ( حتما دقیق این شکلی نیست چون به این یکم چیزای دیگه هم بهش اضافه شده)


    http://www.axgig.com/images/08120850861807628916.png

    توی این پنجره شما لیست پکیج هایی که نصب کردید یا میتونید دانلود کنید رو نشون میده. با اینا الان زیاد کاری نداریم. از منو های بالای همین پنجره Tools -> Manage AVDs ... رو انتخاب کنید تا یه پنجره جدید باز شه که مربوط به دستگاه های شبیه سازی شدس. اگه روی گزینه New کلیک کنید یک پنجره باز میشه که مشخصات اون دیوایس یا ستگاه رو باید وارد کنید.


    http://www.axgig.com/images/53063159121768945627.png

    AVD Name : اسم دستگاه مجازی. مثلا اسشمو میزاریم virtual_nexus
    Device : اون دستگاهیی که میخاید شبیه سازی کنید. مثلا Nexus S v رو انتبخاب میکنیم. (یا هرچی که مایل بودید)
    Target : سیستم عامل دیوایس که با توجه به پکیج هایی که دانلود کردید قابل انتخاب هست. اگر فقط نسخه اصلی SDK رو دانلود کرده باشید احتمالافقط یک گزینه و اونم آخرین نسخه اندروید موجود رو میوتنید انتخاب کنید.
    CPU/ABI : که سی پیو دستگاه رو مشخص میکنه ولی احتمالا الان غیر ARM چیزی رو نتونید انتخاب کنید. بعدا میبینیم چطوری سیپیو انتل رو هم اضافه کنیم که سرعت دستگاه مجازی رو چند براربر میکنه. ولی فعلا همون ARM رو انتخاب کنید.
    Keyboard : اگه تیکش رو بزنید میتونید به جای استفاده از صفحه کلید مجازی اندروید با صفحه کلید کامپیوتر تایپ کنید
    Skin : اگه تیکش رو بزنید کلید های سخت افزاری روی گوشی رو هم نشون میده تا ازش استفاده کنید

    Front Camera و Back Camera : اگه خواستید میتونید یک وب کم رو مشخص کنید تا به عنوان دوربین برای برنامه هایی که به دوربین نیاز دارند استفاده کنه. گزینه Emulated هم باعث میشه دوربین یه تصویر متحرک از قبل طراحی شده توسط خود گوگل رو نشون بده.

    Ram و VM Heap : رم خیلی توی سرعت تاثیر داره. فعلا حد اقل روی 512 اگه میشه قرارش بدید. یا بیشتر تا جایی که خود AVD Manager وارنینگ نده. بعدا بیشترش میکنیم ولی اگه الان زیادبزارید ( فکر کنم بیشتر 768 مگ ) احتمالا شبیه سازتون اجرا نشه
    internal storage : حافظه داخلی دستگاه. همون که هست احتمالا کافی باشه
    SD Card : حافظه خارجی که یه سایز بهش اختصاص بدید. مثلا 200 مگ یا هرچی خواستید.
    دو گزینه دیگه برای تیک زدن اون پایین هست که فقط باید یکیش رو تیک بزنید. برای الان فقط Snap Shot رو تیک بزنید تا شبیه ساز برای دفعات بعدی که میخاید استفاده کنید سریع تر اجرا بشه



    http://www.axgig.com/images/05625266240479224705.png

    حالا OK رو بزنید تا شبیه ساز ساخته بشه. با زدن OK یک پنجره حاوی مشخصات دستگاه نشون داده میشه. تایدش کنیدحالاب باید به لیست شبیه ساز ها توی پنجره AVD Manager شبیه سازی که ساختیم اضافه شده باشه و یه تیک هم کنارش خورده باشه .
    اون رو انتخاب کنید و از پنجره کنار کلید Start و از پنجره باز شده Launch رو بزنید تا شبیه ساز اجرا شه. یه زمان طولانی این صفحه به نمایش در میاد :



    http://www.axgig.com/images/79212352215160407393.png

    البته این زمان فقط دفعه اول که اجرا کنید شبیه سازو اینطوری هست. دفعات بعد سری تر اجرا میشه. بعد از اینکه شبیه ساز آماده شد میتونید از دستگاه مجازی اندروید استفاده کنید و برنامه هاتون رو روش تست کنید (البته تست با گوشی خیلی خیلی خیل بهتره)

    خوب فعلا برای این قسمت کافیه.
    تو قسمت بعد احتمال داره یا نحوه افزایش سرعت شبیه ساز رو ببینیم به چه شکل هست یا اینکه برنامه نویسی رو شروع کنیم :smile:



    http://www.axgig.com/images/30178286810663317849.png
    غفلت از يار, گرفتار شدن هم داد
    از شما دور شدن, زار شدن هم دارد
    هرکه از چشم بي افتاد, محلش ندهند
    عبد آلوده شدن, خوار شدن هم دارد
    عيب از ماست, که هر سال نمي بينيمت چشم بيمار شده, تار شدن هم دارد ...

    دیدگاه


      #3
      پاسخ : آموزش برنامه نویسی اندروید

      سلام

      حرکت خیلی خوبی را شروع کردید.
      مشتاقانه منتظر ادامه هستیم.

      یاعلی

      دیدگاه


        #4
        پاسخ : آموزش برنامه نویسی اندروید

        نوشته اصلی توسط sadeghmojtabaei
        سلام

        حرکت خیلی خوبی را شروع کردید.
        مشتاقانه منتظر ادامه هستیم.

        یاعلی
        خیلی ممنون. خدا کمک کنه ادامه میدیم ان شاءالله
        الان قسمت دوم هم اضافه میشه :read:
        غفلت از يار, گرفتار شدن هم داد
        از شما دور شدن, زار شدن هم دارد
        هرکه از چشم بي افتاد, محلش ندهند
        عبد آلوده شدن, خوار شدن هم دارد
        عيب از ماست, که هر سال نمي بينيمت چشم بيمار شده, تار شدن هم دارد ...

        دیدگاه


          #5
          پاسخ : آموزش برنامه نویسی اندروید

          2. اولین برنامه

          خوب حالا که کار آماده سازی انجام شده میریم تا اولین پروژه رو با هم بسازیم :redface:
          از توی پوشه کنار SDK ویرایشگر eclipse رو اجرا کنید.
          در اولین اجرا نرم افزار از شما آدرس یک فضای کار رو میخاد. میتونید همون که پیشفرض هست بزارید یا اینکه یک فضای جدید بهش معرفی کنید تا پروژه هاتون رو اونجا قرار بدید. البته بعدا هم میشه فضاهای دیگه ای ایجاد کرد. بهتره تیک مربوط به ذخیره به عنوان پیشفرض رو هم بزنید تا دیگه از شما در اینباره نپرسه.
          خوب الان صفحه اول eclipse برای شما باز میشه. که احتمالا یه سری لینک توش هست. این صفحه رو با کلید ضربدر روی تبش میبندیم تا به محیط برنامه نویسی بریم :



          http://up.ashiyane.org/images/kr1coqoyrb4a6ikge2.png

          حالا از منوی بالای نرم ویرایشگر File -> New -> Android Application Project رو انتخاب میکنیم تا صفحه ایجاد پروژه اندروید باز شه :


          http://up.ashiyane.org/images/n2ffflz7nezzxb4vur64.png

          Application Name : نام نرم افزار
          Project Name : نام پروژه ( چیزی که تو eclipse نشون داده میشه )
          Package Name : نام پکیج برنامه که خیلی مهمه. این روش نام گزاری یک روش نام گزاری مرسوم هست. تقریبا مثل اینه که شما اسم سایت رو بر عکس بنویسید :read: . اول com داره ( البته من معمولا به ir تغیرش میدم برا پروژ ها ) بعدش نام مثلا شرکت یا کمپانی و بعد هم نام برنامه. یادتون باشه برای نسخه های مختلف یک نرم افزار باید از یک نام گزاری یکسان استفاده کنید تا اندروید بفهمه باید این این نسخه رو جایگذین نسخه قبلی کنه همینطور جاهای مثل بازار یا مارکت گوگل هم بتونه بفهمه این نسخه پدیت کدوم نسخه هست و به کاربرا پیام بده که نرم افزارشون رو پدیت کنند.

          Minimum Required SDK : باید کمترین نسخه ای که برنامتون بهش نیاز داره رو انتخاب کنید. یعنی اگه نرم افزارتون به امکانات نسخه ی 4.3 نیاز نداره باید اون رو روی نسخه های کنتر تنظیم کنید. کاربرانی میتونند نرم افزار شما رو نصب کنند که نسخه سیستم عاملشون از این نسخه که اینجا تعین میکنید بیشتر یا همین باشه.
          Target SDK : بالاترین نسخه ای که میخاید نرم افزار روش اجرا بشه رو انتخاب کنید (البته روی نسخه های بالا تر از این هم اجرا میشه. ولی هرچی اینجا بالاتر بزارید در زمان کد نویسی خود ویرایش گر کد هایی که تا Target SDK منقضی شده رو مشخص میکنه. یعنی مثلا اگه شما روی 4.3 تنظیم کنید و یک تابع از این نسخه حذف شده باشه , اگه از اون تابع استفاده کردید ویرایشگر به شما هشدار میده )
          Compile With : این هم مشخصه مه چیکار میکنه. التبه توی این گزینه با توجه به پکیج هایی که توی SDK گزاشتید محدودیت دارید.
          حالا بر روی Next کلیک کنید. صفحه بعدی هم فعلا پیشفرضش مناسبه پس دوباره روی Next کلیک میکنیم. در صفحه بعدی میتونید آیکون برنامه رو انتخاب کنید که البته بعدا هم میشه اینکارو کرد.



          http://up.ashiyane.org/images/tc2b2v5qu3koix3bzlsz.png

          باز Next و صفحه بعدی هم روی پیشفرض و Next تا به این صفحه میریسیم :


          http://up.ashiyane.org/images/iusuivrkw3hr27uxrrwd.png

          درمورد Activity جلوتر ان شاءالله بیشتر توضیح میدیم ولی فعلا برای حالا کافیه بدونید Activity Name نام کلاس جاوا صفحه ی اصلی برنامه و Layout Name نام فایل XML صفحه ی اصلی هست.

          حالا بر روی Finish کلیک کنید. خوب الان پروژه ساخته شده. شاید یکم صفحه eclipse الان ترسناک به نظر بیاد ولی نگران نباشید. هیچ چیز مشکلی نداره. قدم به قدم جلو میریم تا ببینیم چی به چیه.
          بهتره با ساختار پروژه اندروید شروع کنیم تا کم کم راه بیفتیم.
          در سمت چپ در پنجره Package Explorer شما یک همچین چیزی رو میبینید :



          http://up.ashiyane.org/images/rfoahii6hjkzv2w64zc4.png

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

          این پوشه کلی پروژه شما هست. توی این پوشه از بالا به پایین اول به src بر میخوریم. کد های جاوا برنامه در اینجا قرار میگیره. الان در این همون پکیج اصلی و کلاس مربوط به صفحه اول برنامه هست.

          زیر این پوشه پوشه gen قرار داره. محتویاط این پوشه توسط خود ویرایشگر ساخته میشه. اگه کامل بازش کنید به دو تا فایل جاوا بر میخورید. فایل R.java رو زیاد باهاش کار میکنیم. کارش این هست که توش پر متغیر از نوع int هست. که درواقع آی دی هر چیزی هست که شما میخاید به نوعی از خارج از کد جاوا به داخل کد جاواتون بیارید. مثلا شما یک عکس رو به پروژه اضافه میکنید. بعد یک شی از یک کلاس تصویر میسازید (فرضا البته). بعد برای اینکه بگید این کلاس تصویر چه عکسی رو نشون بده بهش آی دی عکسی رو که وارد پروژه کردید میدید که یک عدده. خودش تشخیص میده که شما کدوم عکسو میگید و اون عکسو داخل کلاس تصویر قرار میده. اگه متوجه نشدید ایرادی نداره در ادمه بیشتر باهاش کار میکنیم.
          دو تا پوشه زیر gen رو زیاد کاری نداریم الان. فعلا همین کافیه که بدونید لایبری های مربوط به اندروید توشون هست.
          پوشه assets هم مربوط به هر محتوایی میتونه باشه. مثل فیلم و ... ولی ازش زیاد استفاده نمیکنیم چون چیزایی که توش قرار میگیره یکم سخت میشه بهش دسترسی پیدا کرد. البته استفاده های خاص خودشو هم داره. پوشه bin رو هم کاری نداریم. libs هم همینطور. ولی میریسیم به یک پوشه مهم به نام res . توی این پوشه اکثر محتوا هایی که تو برنامه استفاده میشه قرار میگیره. از تصاویر تا صوت و مهم تر از همه فایل های xml صفحات برنامه توش جای عناصر برنامه مثل کلید ها و ... مشخص میشه قرار داره. فایل هایی که توی این پوشه قرار میگیرند دارای یک id میشند که توی فایل R.java در پوشه gen قرار میگیره. خود این پوشه یه سری پوشه داخل خودش داره.
          پوشه هایی که با نام drawable آغاز میشند مربوط به فایل هایی مثل تصاویر هستند. همونطور که میبینید چند تا پوشه داریم که با این نام شروع میشه. دلیلش این هست که شما میتونید یک تصویر رو برای رزولیشن های مختلف طراحی کنید و توی پوشه مربوط قرار بدید. بعد خود سیستم با توجه به رزولیشن گوشی یکی از این تصاویر رو از یکی از این پوشه ها انتخاب میکنه. البته میتونید هم اینکارو نکنید و فقط یک نسخه از اون تصویر در drawable-hdpi قرار بدید.

          زیر این پوشه ها پوشه layout قرار داره. که فایل های xml مربوط به صفحات برنامه یا ... قرار میگیرند. توی این فایل های xml جای اجزای برنامه مثل کلید ها و ... مشخص میشه.

          پوشه های بعدی هم فعلا کاری نداریم. چیزای مثل ساختار منو ها و یا مقادیر ثابت توی اونا قرار میگیره.

          زیر این پوشه ها یک فایل خیلی مهم به نام AndroidMaifest.xml قرار داره. توی این فایل مشخصات برنامه از نام برنامه تا چیزایی که قراره استفاده بشه قرار داره. مثلا اگه شما قرار باشه از بلوتوث در برنامه استفاده کنید باید قبلش توی این فایل مشخص کنید مگر نه در هنگام اجرا برنامه کرش میکنه.

          خوب حالا کارو جلو تر میبریم. بهتره اول یه نگاهی به صفحه فعلی برنامه بندازیم. این فایل رو باز کنید res -> layout -> activity_main.xml تا این صفحه رو ببینید :



          http://up.ashiyane.org/images/qewdb0uphuwzz59mzug3.png

          این شکل ظاهری صفحه اصلی برنامه هست. در واقع یه پیشنمایش از اونه. ویرایشگر این صفحه رو از روی فایل xml ساخته که اگع دقت کنید زیر همین پیشنمایش دو تا تب Graphical Layout و activity_main.xml قرار داره. الان روی Graphical Layout هستیم. که شما یک صفحه با یک متن Hellp world میبینید.
          برای اینکه با ساختار این صفحه بیشتر آشنا شمی روی activity_main.xml کلیک کنید تا کد xml مربوط به نمایش دربیاد



          کد:
          <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingBottom="@dimen/activity_vertical_margin"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:paddingTop="@dimen/activity_vertical_margin"
            tools:context=".MainActivity" >
          
            <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="@string/hello_world" />
          
          </RelativeLayout>
          کدی که میبینید یک همچین چیزیه. اول با RelativeLayout شروع شده (شاید چیز دیگه ای برا شما باشه). RelativeLayout یک المان هست که جز layout ها به حساب میاد. این layout ها کمک میکنه شما بتوین اجزای برنامه رو در جای خودش بنویسید. یکی از خوش دست ترین هاش همین RelativeLayout هست.

          داخل این RelativeLayout یک TextView قرار داره. TextView برای نمایش متن به کار میره. همونطور که میبینید الان توش سه تا خصوصیت تعریف شده.
          layout_width طول این شی هست که الان روی wrap_content تنظیم شده. یعنی طول شی به اندازه محتویات داخلش باشه. بنابر این طول این TextView به اندازه ای میشه که متنش توش جا بگیره. layout_height هم خصوصیت مشابه ولی برای ارتفاع این عنصر هست. text هم متن رو مشخص میکنه که الان آدرس یک متن خارجی رو داده. میتونید محتویاتش رو پاک کنید و هرچی خاستید بنویسید. مثلا :


          کد:
          <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingBottom="@dimen/activity_vertical_margin"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:paddingTop="@dimen/activity_vertical_margin"
            tools:context=".MainActivity" >
          
            <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="این یک متن است" />
            
          </RelativeLayout>
          الان اگه به Graphical Layout برید میبینید یک صفحه هست که توش متن - این یک متن است - رو نوشته . خوب حالا روش کلیک کنید و کلید delete رو از روی کیبورد بزنید تا پاکش کنیم.


          http://up.ashiyane.org/images/pznqaz7sw047l8kekiyr.png

          حالا از سمت چپ این پنجره میتونیم آیتم های مورد نیاز رو به صورت کشیدن و رها کردن در صفحه قرار بدیم. ( از قسمت Palette )
          به عنوان مثال یک کلید رو از قسمت Palette و Form Widgets به روی صفحه میکشیم ( کلید همون Button هست )
          بعد از همون جا یک Large Text میکشیم و زیر Button قرار میدیم ( Large Text همون TextView هست ولی سایز نوشتش بزرگ تره )



          http://up.ashiyane.org/images/e1na4ftctkhysj154s4s.png

          حالا روی Button که در صفحه قرار داره راست کلیک کنید و Edit Text رو انتخاب کنید. یک پنجره باز میشه که پایینش بالای کلید Ok و Cancel و ... یک جایی برای نوشتن قرار داره که الان توش نوشته Button. اون رو تغیر میدیم مثلا عبارت - کلیک کنید - رو داخلش مینویسیم و ok میکنیم
          برای Large Text هم همینکارو میکنیم و مثلا متنش رو - این یک نوشته است - قرار میدیم.
          حالا باید یک id به کلید و متن بدیم تا بتونیم از توی کد java بهشون دسترسی داشته باشیم. روی کلید راست کلیک کنید و Edit ID رو بزنید. حالا به جای آی دی button1 یک آی دی با مفهموم مثلا newButton قرار میدیم. برای نوشته در صفحه هم همینطور و مثلا newTextView قرار میدیم. حالا control + s رو بزنید تا ذخیره بشه.



          http://up.ashiyane.org/images/dpifqg6phqujsw3hzrve.png

          حالا میریم سراغ کد جاوا. از پوشه src فایل MainActivity.java رو باز کنید.

          یک چنین کلاسی رو میبنید :


          کد:
          package ir.tutorial.firstapp;
          
          import android.os.Bundle;
          import android.app.Activity;
          import android.view.Menu;
          
          public class MainActivity extends Activity {
          
            @Override
            protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
            }
          
          
            @Override
            public boolean onCreateOptionsMenu(Menu menu) {
              // Inflate the menu; this adds items to the action bar if it is present.
              getMenuInflater().inflate(R.menu.main, menu);
              return true;
            }
            
          }
          فعلا تابع onCreateOptionsMenu رو کلا پاک میکنیم تا گیج نشیم. تابع onCreate اولین تابعی هست که صدا زده میشه. توی این تابع متویند مقدار دهی های اولیه رو انجام بدید. الان ما توی یک کلاس از نوع Activity هستیم. میتونیم یک فایل XML رو بهش نسبت بدیم که زمان اجرای این کلاس اون فایل رو نمایش بده. این خط هم همینکارو میکنه و اون فایل xml که داشتیم روش کار میکردیم رو به این Activity نسبت میده :

          کد:
          setContentView(R.layout.activity_main);
          حالا میخایم برناممون رو کامل کنیم و کاری کنیم که با زدن کلیدی که توی برنامه گزاشتیم متن اون نوشته تغیر کنه. خوب توی تابع onCreate بعد از setContentView یک شی از کلاس Button تعریف میکنیم .

          کد:
          Button button;
          با نوشتن این خط ویرایش گر یک ایراد میگره و کنار خط یک علامت اخطار با چراغ نشون میده. این علامت یعنی ویرایشگر برای حل این مشکل راه حل های رو پیشنهاد میده. میتونید رو علامت اخطار کلیک کنید یا روی خط مورد نظر برید و کلید control + 1 رو بزنید تا یک منو باز شه. گزینه import 'Button' رو بزنید تا کلاس مربوط به Button به برنامه ضمیمه شه. حالا باید در این شی اون کلیدی که توی فایل xml گزاشته بودیمو قرار بدیم. برای این کار از تابع findViewById استفاده میکنیم. یک ورودی داره که اون ورودی آی دی عنصری هست که میخایم پیدا کنه. ما اسم آی دی کلید رو newButton قرار دادیم. پس توی کلاس R.java یک متغیر به همین اسم ساخته. پس کلیدو اینطوری پیدا میکنیم :

          کد:
          button = (Button)findViewById(R.id.newButton);
          برای اون TextView هم که قرار دادیم به همین شیوه عمل میکنیم :

          کد:
          package ir.tutorial.firstapp;
          
          import android.os.Bundle;
          import android.app.Activity;
          import android.view.Menu;
          import android.widget.Button;
          import android.widget.TextView;
          
          public class MainActivity extends Activity {
          
            @Override
            protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              Button button;
              button = (Button)findViewById(R.id.newButton);
              TextView textView;
              textView = (TextView) findViewById(R.id.newTextView);
            }
            
          }
          حالا باید مشخص کنیم که با زدن کلید چه انتفاقی می افته. برای اینکار از با تابع setOnClickListener داخل شی button اینکارو انجام میدیم. اگه با جاوا آشنایی نداشته باشید شاید الان با یه چیز عجیب و جالب برخورد کنید. اینکه الان قراه توی این تابع به عنوان ورودی یک تابع تعریف کنیم :surprised: . زیاد نگران نباشید. به مرور زمان آشنا میشید. یا اگه خیلی علاقه مندید درمورد interface توی جاوا سرچ کنید :

          وقتی که دارید تایپ میکنید button.setOnClick .... پیشنهادی که خود ویرایشگر میده رو با کلید اینتر قبول کنید بعد توی ورودی بنویسید new... و control+space و دوباره اینتر بزنید تا سریع کار های مورد نیاز توسط ویرایشگر انجام بشه. به آخرین پرانتز هم ; اضافه کنید. بعد اون نشانه گر متن رو بیارید روی OnClickListener و control + 1 یا راست کلیک و Quick Fix رو بزنید و از منو باز شده import 'OnCli .... رو انتخاب کنید تا خط زیر به برنامه اضافه بشه و خطا ها از بین بره :


          کد:
          import android.view.View.OnClickListener;
          حالا در تابع onClick هرچیزی که بنویسید موقع کلیک بر روی کلید اجرا میشه.
          ما میخایم توی این تابع به textView دسترسی داشته باشیم بنابر این باید textView رو عمومی تعریف کنیم. بنابر این کدمون به این شکل در میاد :


          کد:
          package ir.tutorial.firstapp;
          
          import android.os.Bundle;
          import android.app.Activity;
          import android.view.Menu;
          import android.view.View;
          import android.view.View.OnClickListener;
          import android.widget.Button;
          import android.widget.TextView;
          
          public class MainActivity extends Activity {
          
          	
          	TextView textView;
          	
            @Override
            protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              Button button;
              button = (Button)findViewById(R.id.newButton);
              
              textView = (TextView) findViewById(R.id.newTextView);
              
              button.setOnClickListener(new OnClickListener() {
          			
          			@Override
          			public void onClick(View arg0) {
          								
          			}
          		});
            }
            
          }
          همونطور که میبنیدی textView بالای onCreate تعریف شده. حالا داخل onClick با استفاده از تابع setText داخل شی textView متن TextView رو عوض میکنیم :

          کد:
          package ir.tutorial.firstapp;
          
          import android.os.Bundle;
          import android.app.Activity;
          import android.view.Menu;
          import android.view.View;
          import android.view.View.OnClickListener;
          import android.widget.Button;
          import android.widget.TextView;
          
          public class MainActivity extends Activity {
          	
          	TextView textView;
          	
            @Override
            protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              Button button;
              button = (Button)findViewById(R.id.newButton);
              textView = (TextView) findViewById(R.id.newTextView);
              button.setOnClickListener(new OnClickListener() {
          			
          			@Override
          			public void onClick(View arg0) {
          				textView.setText("بر روی کلید کلیک شد");
          			}
          		});
            }
          }
          اگه بخاید کد رو سیو کنید ویرایشگر یک ارو میده


          http://up.ashiyane.org/images/xm0q33fvaq01toypai.png

          این به خاطر این هست که توی فایل کد برنامه فارسی نوشتیم و فایل کد برنامه فرمتش فارسی رو ساپورت نمیکنه. ولی اگه Save as ut.... رو بزنید مشکل حل میشه و فارسی رو هم پشتیبانی میکنه.

          خوب خدارو شکر الان میتونیم پروژه رو تست کنیم :smile:

          شبیه سازو اجرا کنید. وقتی شبیه ساز اجرا شد روی پوشه برنامه تو eclipse راست کلیک کنید و Run As -> Android Application رو انتخاب کنید. حالا باید کمی صبر کنید و میبینید که برنامه روی شبیه ساز اجره میشه. حالا روی کلید کلیک کنید و نتیجه رو ببینید :read:



          http://up.ashiyane.org/images/vjutqm1xdjqvxijmvaw.png


          http://up.ashiyane.org/images/m4s8nvto2x4gqox3gvpc.png

          البته برای تست بعدی پروژه مثلث سمت راست این گزینه توی نوار ابزار بالای برنامه کلیک کنید و پروژه مورد نظر رو انتخاب کنید


          http://up.ashiyane.org/images/i9aaiuffltuvc9j52yb.png

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

          اگه مفید واقع شده لطفا با صلواتی برای ظهور آقا صاحب الزمان یاری فرمایید :smile:
          غفلت از يار, گرفتار شدن هم داد
          از شما دور شدن, زار شدن هم دارد
          هرکه از چشم بي افتاد, محلش ندهند
          عبد آلوده شدن, خوار شدن هم دارد
          عيب از ماست, که هر سال نمي بينيمت چشم بيمار شده, تار شدن هم دارد ...

          دیدگاه


            #6
            پاسخ : آموزش برنامه نویسی اندروید

            سلام

            دستتون درد نکنه واقعا عالی هستش

            خروجیش فقط برای اندروید یا تحت جاوا هم میشه

            من فکر می کنم اگر sdkنصب نشه خروجیش جاوا هستش

            دیدگاه


              #7
              پاسخ : آموزش برنامه نویسی اندروید

              نوشته اصلی توسط بنیامین خلیلی
              سلام

              دستتون درد نکنه واقعا عالی هستش

              خروجیش فقط برای اندروید یا تحت جاوا هم میشه

              من فکر می کنم اگر sdkنصب نشه خروجیش جاوا هستش
              خواهش میکنم. لطف دارید.

              نه راستش فقط اندروید میشه. چون تقریبا اکثر توابع و کلاس های رابط گرافیکیش مال کتابخونه های اندروید هست. همینطوری ساختار پروژش. برای مثال onCreate و یه سری توابع دیگه فقط مخصوص اندروید هست که صداشون بزنه چون سیستم عامل اندروید این شکلی کار میکنه. البته با همین نسخه eclipse هم که کنار sdk قرار داره میشه پروژه جاوا نوشت :smile:
              غفلت از يار, گرفتار شدن هم داد
              از شما دور شدن, زار شدن هم دارد
              هرکه از چشم بي افتاد, محلش ندهند
              عبد آلوده شدن, خوار شدن هم دارد
              عيب از ماست, که هر سال نمي بينيمت چشم بيمار شده, تار شدن هم دارد ...

              دیدگاه


                #8
                پاسخ : آموزش برنامه نویسی اندروید

                دوست عزیز بسیار سپاس از لطفی که می کنید.

                ولی 2 تا پیشنهاد دارم.
                یکی این که یه تاپیک جداگونه برای سوال و جواب ها زده بشه تا از آشفتگی ها احتمالی جلوگیری بشه و این تاپیک مخصوص آموزشتون باشه.
                و دوم این که هر پست آموزشی که میدید یه نسخه pdf همه ضمیمه کنید چون تو آینده نزدیک عکس ها مشکل می خوره و ... اگه pdf باشه کار خیلی منسجم تر میشه.
                و در آخر امیدوارم آموزشتون ادامه دار باشه.
                اسمم بابا برقيه مي دونين کارم چيه دلم مي خواد همه جا که با کمک شما
                مصرف برق کم بشه تا برقمون قطع نشه
                مصرف بي رويه کار خيلي بديه موقع پخش کارتون برق تلويزيون
                اگه يه دفعه بره حوصله مون سر مي ره
                هرگز نشه فراموش لامپ اضافي خاموش

                دیدگاه


                  #9
                  پاسخ : آموزش برنامه نویسی اندروید

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

                  ولی 2 تا پیشنهاد دارم.
                  یکی این که یه تاپیک جداگونه برای سوال و جواب ها زده بشه تا از آشفتگی ها احتمالی جلوگیری بشه و این تاپیک مخصوص آموزشتون باشه.
                  و دوم این که هر پست آموزشی که میدید یه نسخه pdf همه ضمیمه کنید چون تو آینده نزدیک عکس ها مشکل می خوره و ... اگه pdf باشه کار خیلی منسجم تر میشه.
                  و در آخر امیدوارم آموزشتون ادامه دار باشه.
                  ممنون.
                  سوالارو همونطور که تو پست اول گفته شد منم همین نظر رو دارم ولی خوب آخرش وسط مطالب نمیشه هیچی هیچی باشه. اصلا تاپیک یه جوری میشه. تو پست اول مطالب لیست میشه اینطوری بینش پند صفحه هم باشه راحت میشه پیدا کرد. ولی خوب سوالای این تاپیک هم باید مخصوص همین آموزش ها باشه یعنی اگه درمورد مطالب این تاپیک بود دوستان همینجا بپرسن تا بقیه هم بعدا راحت سوالای دیگران راجب مثلا فلان پست رو ببینیند ولی خوب بقیه سوالا تاپیک های جدا گونه باشه.
                  درمورد پیشنهاد دومتون هم خیلی خیلی ممنون. ان شاءالله حتما عملیش میکنم :smile:
                  غفلت از يار, گرفتار شدن هم داد
                  از شما دور شدن, زار شدن هم دارد
                  هرکه از چشم بي افتاد, محلش ندهند
                  عبد آلوده شدن, خوار شدن هم دارد
                  عيب از ماست, که هر سال نمي بينيمت چشم بيمار شده, تار شدن هم دارد ...

                  دیدگاه


                    #10
                    پاسخ : آموزش برنامه نویسی اندروید

                    3. Activity و Intent ها قسمت اول

                    حالا که اولین برنامه رو نوشتیم بهتره یکم با ساز و کار یک برنامه اندروید بیشتر آشنا شیم و بدیم برنامه در حالات مختلف دقیقا چیکار میکنه. این بخش تا بخش LifeCycle اکتیویتی ها خیلی کمک میکنه که در ادامه گیج نشید و راحت بتونید برنامتون رو مدیریت کنید.

                    خوب همونطور که دیدید در پروژه ای که ساختیم یک کلاس به نام MainActivity داشتیم خصوصیات Activity رو به ارث برده بود. پس بهتره ببینیم Activity چیه.
                    Activity یک بخشی از برنامه هست که دارای یک صفحه هست. درواقع این کلاس میتونه یک رابط کاربری داشته باشه. در واقع صفحه های برناممون یک هر کدوم دارای یک Activity مجزا هستند. حالا اندروید یکی از کارای مهمش اینه که این Activity هارو مدیریت میکنه. فرض کنید شما روی گوشیتون سه تا برنامه داشته باشید. برنامه A و B و C فرض کنید هر کدوم از این برنامه ها یک Activity داشته باشند. شما اول برنامه A رو اجرا میکنید . اندروید برنامه A رو به شما نشون میده. بعد تصمیم میگیرید برنامه B رو اجرا کنید. حالا برنامه B روی برنامه A قرار میگیره و شما برنامه B رو در حال اجرا میبینید ( توجه داشته باشید هنوز برنامه A بسته نشده ) بعد برنامه C رو اجرا میکنید. بعد از اینکه برنامه C اجرا شد اندروید میبینه که مثلا رم داره کم میاد. وقتی این اتفاق افتاد پایین ترین برنامه رو میبنده. الان دیگه A بسته شده ولی هنوز B هست. حالا شما اگر برنامه C رو ببندید (مثلا با دکمه بک) میتونید به برنامه B برید و برنامه B بدون اینکه بسته شده باشه کارش رو ادامه بده. در واقع این Activity ها در پشته ای به نام back stack قرار میگرند. پشته یا stack بر عکس صف هست. در یک صف اگه شما اول وارد بشید اولین نفری هستید که کارتون راه می افته. ولی در پشته یا stack اولین چیزی که کارش راه می افته آخرین چیزیه که وارد شده. مثلا شما یک جعبه رو فرض کنید که توش دارید بشقاب میزارید. آخرین بشقابی رو که در جعبه قرار دادید اولین بشقابی هست که میتونید ازش استفاده کنید و از جعبه خارجش کنید.

                    برنامه ها معولا دارای چند اکتیویتی هستند. برای آشنایی بهتر میتوینم یکم با این اکتیویتی ها کار کنیم. خوب پس طبق قسمت قبلی یک پروژه جدید مثلا به اسم App2-ActivityAndIntent میسازیم. حالا هر اسمی خواستید شما قرار بدید. من اسم کامل قرار میدم تا بعدا که پروژه هارو برای دانلود گزاشتم بتونید راحت قسمت های مختلف رو مربوط رو اگه نیاز داشتید ببینید و استفاده کنید.

                    خوب پروژه در حالت پیشفرض کی MainActivity داره که فایل main_activity.xml رو به نمایش در میاره.

                    در فایل main_activity.xml یک کلید قرار میدیم. میخایم با زدن این کلید یک صفحه جدید در برنامه نشون داده بشه.



                    http://up.ashiyane.org/images/4ndsce5814d1vgdc0nxo.png

                    حالا باید یک فایل xml دیگه بسازیم تا فعالیت دوم ( اکتیویتی دوم ) اون رو به عنوان رابط کاربری ازش استفاده کنه. برای این کار یا با انتخاب از نوار ابزر یا انتخاب File -> New -> Android XML File این صفحه رو باز میکنیم : (تصویر کمکی آیکون : http://up.ashiyane.org/images/q2i0hu1ufnixyz0ql1i.png)


                    http://up.ashiyane.org/images/kdi9oqv9snepmde8qwx4.png


                    غیر از layout مربوط به اکتیوتی ها که الان قراره بسازیم , خیلی فایلای xml دیگه هم میشه ساخت که الان باهاش کاری نداریم. برای همین از قسمت Resource Type گزینه Layout رو انتخاب میکنیم. Project هم باید روی پروژمون تنظیم شده باشه. File هم اسم فایل هست که یک سری قوانین رو تو نام گزاری باید در مد نظر بگیرید. بهتره با حروف کوچیک بنویسید و بین کلمه ها _ استفاده کنید. Root Element هم عنصری رو مشخص میکنه که قراره بقیه عناصر داخل اون قرار بگیرند. فعلا از اون لیست Relative Layout رو انتخاب کنید. ان شاء الله در بعدا راجب Layout ها حرف میزنیم. خوب اسم File رو من مثلا قرار میدم second_activity و روی Finish کلیک میکنیم.
                    حالا باید فایل second_activity.xml به زیر مجموعه پوشه layout اضافه شده باشه :



                    http://up.ashiyane.org/images/fx6s8e521nl1hb3h5yup.png

                    همین فایلو باز میکنیم. میبینید که یک صفحه جدید رو از روی فایل xml ساخته که مثل main_activity.xml میتونید توش چیزی قرار بدید. به عنوان مثال یک متن بزرگ داخلش قرار میدیم :


                    http://up.ashiyane.org/images/d0lm5wr5hksc13rvr92.png

                    همونطور که میبنید نوشته خیلی به کنار صفحه چسبیده شده. بهتره با استفاده از خصوصیت margin یکم اون رو از کناره ها دور کنیم. برای اینکار میتونیم از پنجره properties سمت راست استفاده کنیم. برای تغیر خصوصیات یک شی اون رو انتخاب میکنیم و از این پنجره خصوصیاتش رو تغیر میدیم. مثلا الان TextView که ساختیم رو انتخاب میکنیم. به این پنجره میریم و از قسمت Layout Parameters -> Margins مقادیر margin رو تغیر میدیم. مثلا top margin و right margin رو برابر 10dp قرار میدیم. (راجب به واحد ها در آینده ان شاءالله بحث میکنیم)


                    http://up.ashiyane.org/images/n02kzjf4pg0g4pkpaa83.png

                    خوب حالا نوشته یکمی از کناره ها فاصله گرفته :


                    http://up.ashiyane.org/images/namozh4gl25lipb4xnp.png

                    راستی آی دی کلیدی main_activity رو برابر button و آی دی تکست ویو second_activity رو textView قرار میدیم.

                    روی پکیج برنامه توی پوشه src راست کلیک می کنیم و New -> Class رو انتخاب میکنیم تا این پنجره باز شه :


                    http://up.ashiyane.org/images/sam6cbfeoeb5g8sqm4i.png

                    از این پنجره میتونیم برای ساخت کلاس استفاده کنیم. داخل قسمت Name باید اسم کلاسمون رو قرار بدیم و جلوی Supreclass کلاسی رو مینویسیم که قراره ازش ارث بری کنیم. برای الان مثلا در قسمت Name مینویسیم SecondActivity و در قسمت Superclass مینویسیم android.app.Activity تا از کلاس Activity ارث بری کنه (یا مینویسیم Activ... و control + space رو میزنیم تا خودش پیش بینی کنه). با زدن کلید Finish یک همچین کلاسی برای شما ساخته میشه :

                    کد:
                    package ir.tutorial.app2_activityandintent;
                    
                    import android.app.Activity;
                    
                    public class SecondActivity extends Activity {
                    
                    }
                    علامتی که مشخص میکنه کجای متن قراره نوشته بشه رو داخل کلاس قرار بدید و کنترل + اسپیس رو بزنید تا لیست توابعی رو برای شما بیاره. با نوشتن onCreat... تابع onCreate رو پیدا میکنیم و اون رو override میکنیم :


                    کد:
                    package ir.tutorial.app2_activityandintent;
                    
                    import android.app.Activity;
                    import android.os.Bundle;
                    
                    public class SecondActivity extends Activity {
                    	@Override
                    	protected void onCreate(Bundle savedInstanceState) {
                    		// TODO Auto-generated method stub
                    		super.onCreate(savedInstanceState);
                    	}
                    }
                    این تابع زمانی که این Activity اجرا میشه صدا زده میشه. یک ورودی هم داره که حالا فعلا کاریش نداریم. الان فقط باید فایل xml رو نسبت بدیم به اکتیویتی. برای این کار از setContentView استفاده میکنیم و داخلش آی دی scond_activity رو از فایل R.java پیدا میکنیم و قرار میدیم :

                    کد:
                    package ir.tutorial.app2_activityandintent;
                    
                    import android.app.Activity;
                    import android.os.Bundle;
                    
                    public class SecondActivity extends Activity {
                    	@Override
                    	protected void onCreate(Bundle savedInstanceState) {
                    		super.onCreate(savedInstanceState);
                    		setContentView(R.layout.second_activity);
                    	}
                    }
                    حالا به فایل MainActivity.java میریم. مثل دفه ی قبل کلید رو پیدا میکنیم و OnClickListener بهش اضافه میکنیم :

                    کد:
                    package ir.tutorial.app2_activityandintent;
                    
                    import android.os.Bundle;
                    import android.view.View;
                    import android.view.View.OnClickListener;
                    import android.widget.Button;
                    import android.app.Activity;
                    
                    public class MainActivity extends Activity {
                    
                    	@Override
                    	protected void onCreate(Bundle savedInstanceState) {
                    		super.onCreate(savedInstanceState);
                    		setContentView(R.layout.activity_main);
                    		Button button = (Button) findViewById(R.id.button);
                    		button.setOnClickListener(new OnClickListener() {	
                    			@Override
                    			public void onClick(View arg0) {
                    				// TODO Auto-generated method stub	
                    			}
                    		});
                    	}
                    }
                    برای اجرای صفحه دوم ما باید از چیزی به نام Intent استفاده کنیم.
                    Intent به صورت کلی برای ارسال پیام برای درخواست چیزی استفاده میشه. مثلا اگه شما بخاید از توی برنامه صفحه مرورگر گوشی رو باز کنید یک Intent میفرستید که میخاید براتون مرورگرو باز کنه. یا مثلا برای اجرای یک سرویس هم از Intent ها ممکنه استفاده بشه.
                    برای الان ما میخایم صفحه دوم برنامه رو باز کنیم. برای اینکار باید یک ایننت بسازیم و بهش کلاسی که داره این درخواست رو ارسال میکنه (اکتیویتی حاظر) و کلاسی که قراره اجرا بشه رو بدیم (اکتیویتی دوم) . بعد هم با استفاده از تابع startActivity اون intent رو اجرا کنیم.
                    پس کد ما به این شکل در میاد :


                    کد:
                    package ir.tutorial.app2_activityandintent;
                    
                    import android.os.Bundle;
                    import android.view.View;
                    import android.view.View.OnClickListener;
                    import android.widget.Button;
                    import android.app.Activity;
                    import android.content.Intent;
                    
                    public class MainActivity extends Activity {
                    
                    	@Override
                    	protected void onCreate(Bundle savedInstanceState) {
                    		super.onCreate(savedInstanceState);
                    		setContentView(R.layout.activity_main);
                    		Button button = (Button) findViewById(R.id.button);
                    		button.setOnClickListener(new OnClickListener() {	
                    			@Override
                    			public void onClick(View arg0) {
                    				Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                    				startActivity(intent);
                    			}
                    		});
                    	}
                    }
                    خوب اگه الان کد برنامه رو اجرا کنیم و روی کلید کلیک کنیم برنامه با یک ارور بسته میشه.


                    http://up.ashiyane.org/images/z9e9ihcaz7kja2m1i3rc.png

                    دلیلش این هست که اکتیویتی جز مواردی هست که باید در فایل AndroidManifest.xml معرفی بشه. و اگه این اتفاق نیفته اندروید اجازه فعالیت به اون رو نمیده. بنابر این فایل AndroidManifest.xml رو باز میکنیم. از قسمت پایین صفحه ای که باز میشه AndroidManifest.xml رو انتخاب میکنیم تا نسخه xml فایل رو بیاره


                    http://up.ashiyane.org/images/dz1g66n72krlpvodp1b.png

                    فعلا یک همچین کدی رو میبینید :

                    کد:
                    <?xml version="1.0" encoding="utf-8"?>
                    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                      package="ir.tutorial.app2_activityandintent"
                      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="ir.tutorial.app2_activityandintent.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>
                      </application>
                    
                    </manifest>
                    بهتره یکم راجبش صحبت کنیم تا براتون مفهوم تر بشه.
                    در کل که این کد ها مشخصات برنامه رو داخلش نگه داشته .

                    یک سری این اطلاعات رو در موقع ساخت پروژه مشخص کردیم. مثل package , minSdkVersion و .... . یا مثلا در قسمت application با خصوصیت icon همون آیکون برنامه مشخص شده.

                    یکم پیین تر یک activity معرفی شده که همون اکتیویتی اصلی برنامه هست که به صورت پیشفرض مشخص شده. یک intent-filter هم داخلش هست که مثلا مشخص میکنه این فعالین از چه طریقی اجرا بشه.
                    حالا زیر همین Activity ما اکتیویتی خودمون رو به این شکل معرفی میکنیم :


                    کد:
                    <activity android:name="ir.tutorial.app2_activityandintent.SecondActivity"/>
                    خیلی ساده یک تگ activity ساختیم که توش در خصوصیت name آدرس اکتیویتی رو بهش دادیم. الان AndroidManifest.xml به این شکل شده :

                    کد:
                    <?xml version="1.0" encoding="utf-8"?>
                    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                      package="ir.tutorial.app2_activityandintent"
                      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="ir.tutorial.app2_activityandintent.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="ir.tutorial.app2_activityandintent.SecondActivity"/>
                        
                      </application>
                    
                    </manifest>
                    حالا برنامه رو اجرا کنید. میبینید که با کلیک بر روی کلید به فعالیت دوم میریم. بعد اگه کلید بازگشت گوشی رو بزنید به اکتیویتی اول بر میگردیم :


                    http://up.ashiyane.org/images/wdsdowjhz61x1tdk9v0t.png


                    http://up.ashiyane.org/images/7erj9chazy9iokldroe.png

                    خوب فعلا برای این بخش کافیه. ان شاءالله در ادامه یکم دیگه با Intent ها کار میکنیم و بعد به سراغ LifeCycle یک اکتیویتی میریم.
                    غفلت از يار, گرفتار شدن هم داد
                    از شما دور شدن, زار شدن هم دارد
                    هرکه از چشم بي افتاد, محلش ندهند
                    عبد آلوده شدن, خوار شدن هم دارد
                    عيب از ماست, که هر سال نمي بينيمت چشم بيمار شده, تار شدن هم دارد ...

                    دیدگاه


                      #11
                      پاسخ : آموزش برنامه نویسی اندروید

                      متاسفانه عکس ها باز نمیشن
                      اسمم بابا برقيه مي دونين کارم چيه دلم مي خواد همه جا که با کمک شما
                      مصرف برق کم بشه تا برقمون قطع نشه
                      مصرف بي رويه کار خيلي بديه موقع پخش کارتون برق تلويزيون
                      اگه يه دفعه بره حوصله مون سر مي ره
                      هرگز نشه فراموش لامپ اضافي خاموش

                      دیدگاه


                        #12
                        پاسخ : آموزش برنامه نویسی اندروید

                        مطمعنید ؟
                        برا من باز میشه :read:
                        غفلت از يار, گرفتار شدن هم داد
                        از شما دور شدن, زار شدن هم دارد
                        هرکه از چشم بي افتاد, محلش ندهند
                        عبد آلوده شدن, خوار شدن هم دارد
                        عيب از ماست, که هر سال نمي بينيمت چشم بيمار شده, تار شدن هم دارد ...

                        دیدگاه


                          #13
                          پاسخ : آموزش برنامه نویسی اندروید

                          4. Activity و Intent ها قسمت دوم

                          در بخش قبلی با استفاده از Intent ها کی آشنا شدیم. حالا یکم بیشتر باهاشون کار میکنیم.
                          یک پروژه جدید میسازیم ( یا میتونید پروژه قبلی رو ادامه بدید ) که دو تا فعالیت داشته باشه و یک کلید از فعالیت اول کاربر رو به فعالیت دوم ببره. یک TextView هم در فعالیت دوم قرار میدیم.
                          ولی اینبار یک آیتمی دیگه به فعالیت اول اضافه میکنیم. یک EditText که بتونیم درونش از کاربر یک متن رو به عنوان ورودی دریافت کنیم. برای اینکار در layout مربوط به اکتیویتی اول از قسمت Pelette -> Text Fields -> Plain Text رو به داخل layout میکشیم.



                          http://up.ashiyane.org/images/xmqkodejcsmia6fcxin.png

                          آدی اون رو هم برابر editText قرار میدیم. حال به MainActivity.java میریم.
                          قراره کاری کنیم که کاربر بتونه متن وارد شده در فعالیت اول رو در فعالیت دوم ببینه. برای اینکار باید در اینتنتی که برای ایجاد SecondActivity ساختیم متن مورد نظر رو قرار بدیم و بعد در فعالیت دوم اون رو دریافت کنیم و نمایش بدیم.


                          براری این کار از تابع putExtra در intent استفاده میکنیم. کار این تابع این هست که دو ورودی میگیره. اولی نامی که قراره تو اکتیویتی دوم با استفاده از اون مقدار مورد نظر پیدا بشه. دومی هم مقدار مورد نظر که میتونه انواع مختلفی مثل int , boolean یا ... باشه. ما فعلا درش یک رشته قرار میدیم. برای دریافت رشته از EditText هم از تابع getText استفاده میکنیم که یک Editable بر میگردونه و بعد با تابع toString اون Editable دریافتی رو تبدیل به متن میکنیم و متنی که کاربر وارد کرده رو دریافت می کنیم. البته باید یادمون باشه قبلش EditText رو از تو layout پیدا کنیم. پس تا اینجا کدمون به اینصورت میشه :

                          کد:
                          package ir.tutorial.app3_activityandintent;
                          
                          import android.os.Bundle;
                          import android.app.Activity;
                          import android.content.Intent;
                          import android.text.Editable;
                          import android.view.Menu;
                          import android.view.View;
                          import android.view.View.OnClickListener;
                          import android.widget.Button;
                          import android.widget.EditText;
                          
                          public class MainActivity extends Activity {
                          
                          	Button button;
                          	EditText editText;
                          	
                          	@Override
                          	protected void onCreate(Bundle savedInstanceState) {
                          		super.onCreate(savedInstanceState);
                          		setContentView(R.layout.activity_main);
                          		
                          		button = (Button)findViewById(R.id.button);
                          		editText = (EditText)findViewById(R.id.editText);
                          		button.setOnClickListener(new OnClickListener() {
                          			
                          			@Override
                          			public void onClick(View arg0) {
                          				Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                          				String text = editText.getText().toString();
                          				intent.putExtra("userString", text);
                          				startActivity(intent);
                          			}
                          		});	
                          	}
                          }
                          ما الان متن وارد شده در EditText رو با اسم userString به فعالیت دوم فرستایدم. حالا باید اونجا دریافتش کنیم. اول باید با استفاده از تابع getIntent این intent که اینطرف ساختیم رو دریافت کنیم. و بعد با استفاده از تابع getExtra یک Bundle دریافت کنیم که توش این userString قرار داره. بعد باید از اون Bundle (بسته) با استفاده از تابع getString رشته با نام userString رو بگیریم.

                          بعد باید با استفاده از تابع setText داخل TextView متنشو تغیر بدیم (متن TextView رو )

                          بنابر این کد فعالیت دوم هم به این شکل میشه :


                          کد:
                          package ir.tutorial.app3_activityandintent;
                          
                          import android.app.Activity;
                          import android.os.Bundle;
                          import android.widget.EditText;
                          import android.widget.TextView;
                          
                          public class SecondActivity extends Activity {
                          	
                          	TextView textView;
                          	
                          	@Override
                          	protected void onCreate(Bundle savedInstanceState) {
                          		super.onCreate(savedInstanceState);
                          		setContentView(R.layout.second_activity);
                          		textView = (TextView)findViewById(R.id.textView);
                          		String text = getIntent().getExtras().getString("userString");
                          		textView.setText(text);
                          	};
                          }
                          حالا برنامه رو تست میکنیم.


                          http://up.ashiyane.org/images/obe7btdau3xx6x80lsn.png


                          http://up.ashiyane.org/images/hsazhuvdav5969xn8ps.png

                          فکر کنم برای کار با Intent ها برای فعلا کافی باشه. ان شاءالله در قسمت بعد LifeCycle یک اکتیویتی رو بررسی میکنیم. :read:
                          غفلت از يار, گرفتار شدن هم داد
                          از شما دور شدن, زار شدن هم دارد
                          هرکه از چشم بي افتاد, محلش ندهند
                          عبد آلوده شدن, خوار شدن هم دارد
                          عيب از ماست, که هر سال نمي بينيمت چشم بيمار شده, تار شدن هم دارد ...

                          دیدگاه


                            #14
                            پاسخ : آموزش برنامه نویسی اندروید

                            اقا سایت اپلود رو عوض کن انتی ویروس نود ویروس میشناسه 100 تا پیغام زیر میاد دردسر ایجاد کرده

                            دیدگاه


                              #15
                              پاسخ : آموزش برنامه نویسی اندروید

                              با سلام و تشکر

                              من jdk رو نصب کردم. و SDK Manager.exe رو هم اجرا کردم. صفحه مشکی اومد و رفت ولی خبری از پنجره نشد. به نظرتون مشکل از کجاست؟

                              کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                              دیدگاه

                              لطفا صبر کنید...
                              X