0
09383027965

قسمت پنجم آموزش برنامه نویسی اندروید

 

به نام خدا

 

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

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

 

این بار قصد دارم شما رو با برنامه نویسی اندروید Android اشنا کنم و از صفر کار تا تمام سرفصل هایی که می تواند در برنامه نویسی اندروید مورد استفاده قرار بگیرید رو جلو بریم تا بتوانیم برنامه های مختلفی برای گوشی های اندرویدی خود بنویسیم و بیشتر با برنامه های سیستم عامل اندروید گوشیمان آشنا بشیم. پس اگر قصد دارید برنامه نویسی اندروید رو دنبال کنید با سایت دانشجویان کامپیوتر (www.pcstudent.ir) همراه باشید.

 

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

 

برنامه نویسی اندرویدی ما با نرم افزار قدرتمند IntelliJ IDEA 14.1.5 خواهد بود.

 

در این قسمت به کار با اکتیویتی ها می پردازیم این که چگونه یک اکتیویتی (صفحه) دیگه ایجاد کنیم و درون آن نیز کد بنویسیم و چگونه اکتیویتی های ساخته شده را با استفاده از یک دکمه یا هر چیز دیگری باز کنیم.

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

 

واسه ایجاد یک اکتیویتی جدید ابتدا باید یک فایل xml از قسمت layout ایجاد کنیم. سپس یک فایل java در قسمت src و در کنار فایل java قبلی برنامه

بعد از این که این فایل ها رو ایجاد کردید حالا باید ابتدا ارتباط بین فایل xml را با فایل java برقرار کنیم برای انجام این کار ابتدا باید رویداد onCreate را ایجاد کنیم نحوه انجام این کار در قسمت دوم آموزش داده شده ولی بازم با دانلود فیلم آموزشی این قسمت می توانید ببینید.

کد رویداد onCreate و ارتباط فایل java با xml به صورت زیر می باشد.

package com.example.amozesh;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

/**
* Created by PCSTUDENT on 12/11/2015.
*/
public class Page2 extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.page2);

 

همین طور که در کد ها مشخص است اسم فایل xml (صفحه جدیدمون) را page2 گذاشتیم و فایل java مربوط به این فایل را Page2 قرار دادیم.

نکته : سعی کنید وقتی از چندین layout استفاده می شود استانداردش این که اسم فایل xm با java مربوطه را یکی قرار دهید با این تفاوت که فایل xml را با حروف کوچک ولی فایل java حرف ابتدایی را با بزرگ قرار دهید. چون زمانی که تعداد layout ها افزایش پیدا می کند سخت خواهد بود آن ها را تشخیص دهیم.

قصدمون این که با کلیک بر روی یک دکمه وارد اکتیویتی دوم بشیم برای انجام این کار دستورات زیر را وارد می کنیم تا یک دکمه به اکتیویتی main اضافه بشه.

<Button
android:id=”@+id/btnNext”
android:text=”@string/page2″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”/>

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

Button next = (Button) findViewById(R.id.btnNext);

next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

Intent page2 = new Intent(Main.this,Page2.class);
startActivity(page2);

}
});

رویداد کلیک که در جلسه قبل باهاش اشنا شدیم.

حالا برای باز کردن اکتیویتی دوم نیاز به یک Intent داریم. من اومدم یک متغیر page2 از Intent تعریف کردم بعد از تعریف از کلمه new استفاده کردم بعدش فضایی برای Intent تعریف کردم. دو ورودی می گیرد اولین ورودی اون فایلی هستش که از آنجا درخواست داده شده است که در اینجا از فایل Main.java در خواست برای باز شدن داده شده است دومین ورودی فایل java مربوط به اون اکتیویتی می باشد که قراره باز بشه که اگه یادتون باشه بالاتر اسم اون کلاس و Page2 گذاشتیم یا بهتره به جای فایل بگم class اکتیویتی دوم را اینجا و در ورودی دوم صدا می زنیم و برای این کار باید اسم کلاس رو به همراه class بگیم تا اون فایل java را برایمان باز کند.

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

<activity android:name=”.Page2″/>

 

فقط این نکته را فراموش نکنید که این خط کد را باید در درون تگ

application

 

قرار دهید و اگر خارج از آن باشد باز هم دچار خطا خواهید شد.

بعد از وارد کردن این اکتیویتی فایل AndroidManifest.xml به صورت زیر خواهد شد.

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.example.amozesh”
android:versionCode=”1″
android:versionName=”1.0″>
<uses-sdk android:minSdkVersion=”8″/>
<application android:label=”@string/app_name” android:icon=”@drawable/ic_launcher”>

<activity android:name=”Main”
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=”.Page2″/>

</application>
</manifest>

بعد انجام این کارا وقتی روی دکمه ای که روی اکتیویتی main.xml می باشد کلیک نمایید اکتیویتی دوم باز می شود.

بحث بعدی انتقال اطلاعات بین اکتیویتی ها می باشد. برای این که وقتی داریم اکتیویتی دوم را باز می کنیم یک سری اطلاعات هم همراه آن به اکتیویتی بعدی (دوم) ارسال بشه از تابع putExtra که در درون همان متغیر تعریف شده از Intent قرار دارد استفاده می کنیم این تابع یک کلیدـ مقدار می گیرد.

مثلا در این مثال من امدم دو متغیر با مقدار اولیه به اکتیویتی دوم ارسال کرده ام. کد مربوط به انجام این کار به صورت زیر خواهد بود.

Button next = (Button) findViewById(R.id.btnNext);

next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

Intent page2 = new Intent(Main.this,Page2.class);
page2.putExtra(“name”,”hashem”);
page2.putExtra(“webSite”,”Pcstudent.ir”);
startActivity(page2);

}
});

 

خوب این دستورات همان رویداد دکمه می باشد فقط با این تفاوت که دو خط page2.putExtra قرار دادیم چون دو متغیر قصد داریم ارسال نماییم.

متغیر اول نام کلید آن name هستش و مقدار اولیه آن hashem متغیر دوم کلید آن website و مقدار آن Pcstudent.ir می باشد.

به این شکل این دو متغیر به اکتیویتی Page2.class ارسال می شود یا بهتر بگم به کلاس Page2 ارسال می شود.

حالا زمانی که بخواهیم این متغیر ها را در کلاس Page2.java دریافت کنیم به صورت زیر انجام خواهیم داد. ابتدا ما روی برای این که بتوانیم مقدار این دو متغیر را مشاهده نماییم دو تا TextView روی اکتیویتی دوم (page2.xml) قرار می دهیم.

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”match_parent”
android:layout_height=”match_parent”>

<TextView
android:id=”@+id/viewName”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”/>

<TextView
android:id=”@+id/viewWebSite”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”/>

</LinearLayout>

حالا در فایل Page2.java برای دریافت این دو متغیر به صورت زیر عمل می کنیم.

package com.example.amozesh;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

/**
* Created by PCSTUDENT on 12/11/2015.
*/
public class Page2 extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.page2);

TextView name = (TextView) findViewById(R.id.viewName);
TextView webSite = (TextView) findViewById(R.id.viewWebSite);

Bundle b = getIntent().getExtras();
name.setText(b.getString(“name”));
webSite.setText(b.getString(“webSite”));

}
}

این دستورات تمامی کد هایی خواهد بود که در فایل Page2.java نیاز داریم.

خوب رویداد onCreate بعد ارتباط فایل xml با کلاس Page2.java قرار دارد بعد از اون ارتباط دو TextView که روی فایل xml گذاشتیم با دو متغیر name و website خواهد بود. حالا برای این که ورودی های ارسال شده به فایل Page.java را دریافت کنیم به یک متغیر از Bundle نیاز داریم یک متغیر از این نوع به اسم b تعریف کردیم و ان را برابر با getIntent() و getExtras() قرار دادیم چون مقادیر ارسالی با Intent ارسال گشته و ما با getIntent یعنی گرفتن Intent قصد داریم آن ها را دریافت کنیم بعد از آن از getExtras() استفاده کردیم تا Extra های ارسالی را دریافت کنیم.

بعد از آن دو متغیر تعریف شده از TextView را با setText که قبلا گفته شد مقداردهی کردیم و با صدا زدن متغیر Bundle که همان b هستش و استفاده از تابع getString و دادن ورودی کلید اون متغیر ارسال شده به این کلاس می توانیم مقدار آن را دریافت کنیم.

ما اون دو متغیری که به این کلاس ارسال کردیم اگه یادتون باشه گفتم به صورت کلید مقدار هستش حالا برای دریافت فقط کافی است با تابع getString(“name”) و دادن ورودی به آن که همان کلید های متغیر های ارسالی می باشد می توانید مقدار آن را دریافت کرده و درون متغیری قرار دهید یا هر بلایی که دلتون می خواهد سرش در بیارید.

 

موفق و پیروز باشید تا قسمت بعدی اموزش

 
 

شما می توانید این قسمت از آموزش را به صورت آنلاین مشاهده نمایید.
 

 
همچنین می توانید ویدئو مربوط به این قسمت را با کیفیت اصلی دانلود نمایید.

 

 

دانلود
دانلود

 

 

دیدگاه کاربران
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

19 + شانزده =

This site uses Akismet to reduce spam. Learn how your comment data is processed.