چطور می تونم کمکتون کنم؟

آموزش برنامه نویسی به زبان اندروید (قسمت چهارم)

شروع یک فعالیت (activity)  دیگر

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

پاسخ به دکمه Send

  • در اندروید استودیو از آدرس res/layout  فایل activity_my.xml  را ویرایش کنید.
  • در المان <Button>  خاصیت android:onclick    را به res/layout/activity_my.xml  اضافه کنید.

<Button

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/button_send"

</    android:onClick="sendMessage"

مقدار خاصیت android:onClick، عبارت sendMessage  می‌باشد که نام یک متد در فعالیت شماست که هنگامی که کاربر بر روی دکمه Send  کلیک می‌کند، سیستم آن را فراخوانی می‌کند.

  • در آدرس java/com.mycompany.myfirstapp، فایل MyActivity.java  را باز کنید.
  • در کلاس MyActivity، متد sendMessage()  مانند زیر اضافه کنید.

/* Called when the user clicks the Send button* */

public void sendMessage(View view){

   //Do something in response to button

}

برای اینکه سیستم بتواند این متد را به متدی که اسم آن را android:onClick  گذاشته‌اید مطابقت دهد، نشانه باید به طور دقیق نمایش داده شود. متد باید دارای خصوصیات زیر باشد:

  • عمومی باشد
  • مقدار برگشتی void  داشته باشد
  • یک view  به عنوان تک پارامتر داشته باشد. ( این view ایی خواهد بود که بر روی آن کلیک شده است)

ساخت یک Intent

  • در MyActivity.java، داخل متد sendMessage()  یک Intent  بسازید که یک فعالیت را با نام DisplayMessageActivity را طبق کد زیر نشان دهد

java/com.mycompany.myfirstapp/MyActivity.java

public void sendMessage(View view) {
  Intent intent = new Intent(this, DisplayMessageActivity.class);
}

در این قسمت سازنده از دو پارامتر استفاده می‌کند:

  • یک Context  که به عنوان پارامتر اول شناخته می‌شود. ( Activity  یک زیر کلاس Context  است)
  • یک Class  اجزاء اپلیکیشن که سیستم باید تحویل Intent دهد. در اندروید استودیو بهتر است کلاس Intent، import شود.
  • در بالای فایل، کلاس Intent را وارد کنید

java/com.mycompany.myfirstapp/MyActivity.java

import android.content.Intent;

در اندروید استودیو دکمه‌های Atl+Enter ( در مک option+return) را فشار دهید تا کلاس‌های ناموجود، وارد شوند.

  • در متد sendMessage() ازfindViewById()  استفاده کنید تا المان EdithText را بگیرید.

java/com.mycompany.myfirstapp/MyActivity.java

public void sendMessage(View view) {
  Intent intent = new Intent(this, DisplayMessageActivity.class);
  EditText editText = (EditText) findViewById(R.id.edit_message);
}

  • در بالای فایل کلاس EditText  را وارد کنید. در اندروید استودیو دکمه‌های Atl+Enter ( در مک option+return) را فشار دهید تا کلاس‌های ناموجود، وارد شوند.
  • متن را به یک متغیر محلی message  اختصاص دهید و از متد putExtra()  استفاده کنید تا متنش را به مقدار Intent اضافه کنید.

java/com.mycompany.myfirstapp/MyActivity.java

public void sendMessage(View view) {
  Intent intent = new Intent(this, DisplayMessageActivity.class);
  EditText editText = (EditText) findViewById(R.id.edit_message);
  String message = editText.getText().toString();
  intent.putExtra(EXTRA_MESSAGE, message);
}

یک Intent  می‌تواند انواع داده‌ها را به عنوان key-value  داشته باشد. متد putExtra()  به عنوان اسم اصلی (key name) پارامتر اول و به عنوان مقدار (value) در پارامتر دوم شناخته می‌شود.

  • در بالای کلاس MyActivity توضیح EXTRA_MESSAGE  به ترتیب زیر اضافه کنید

java/com.mycompany.myfirstapp/MyActivity.java

public class MyActivity extends ActionBarActivity {
    public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE";
    ...
}

در فعالیت بعدی برای توضیح Intent  اضافی باید از یک ثابت عمومی استفاده شود.

  • در متد sendMessage   برای به پایان رساندن Intent، باید متد startActivity()  فراخوانده شود.

با این کد اخیر متد کامل sendMessage()، توسط دکمه Send درخواست می‌شود.

java/com.mycompany.myfirstapp/MyActivity.java

 

 

/** Called when the user clicks the Send button */


public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

به این ترتیب سیستم درخواست را دریافت کرده و یک فعالیت جدید را که توسط Intent  مشخص شده، شروع می‌شود. اکنون باید یک کلاس DisplayMessageActivity  بسازید.

ساخت  یک فعالیت دیگر

تمام زیر منوها Activity  باید در متد onCreate()  اجرا شوند. این متد جایی است که فعالیت طی یک پیغام Intent  را دریافت می‌کند و سپس پیغام ترجمه می‌شود.هم چنین متد onCreate() باید لی اوت فعالیت را با متد setContentView()  توضیح داده شود. در این مرحله اولین تنظیمات اجزاء فعالیت، اجرا می‌شود.

ساخت یک فعالیت جدید با اندروید استودیو

اندروید استودیو برای ساخت یک فعالیت جدید، حاوی یک stub  برای متد onCreate می‌باشد.

  • در اندروید استودیو، در آدرس java پکیج com.mycompany.myfirstapp را انتخاب کرده و بر روی آن راست کلیک کنید و New > Activity > Blank Activity را انتخاب کنید.
  • در پنجره Choose Option، جزئیات فعالیت را پر کنید.
    • Activity Name:DisplayMessageActivity
    • Layout Name:activity_display_message
    • Title:My Message
    • Hierarchical Parent: com.mycompany.myfirstapp.MyActivity
    • Package Name:com.mycompany.myfirstapp
    • بر روی finish  کلیک کنید.
  • فایل DisplayMessageActivity.java را باز کنید.

این کلاس هم اکنون شامل متدهای onCreate()  می‌باشد. اجراهای این متد بعداً به روز رسانی خواهند شد. این کلاس هم چنین شامل اجراهای onOptionItemSelected()  می‌باشد.  این دو متد را همانطور که الان هستند بدون تغییر نگه دارید.

  • متد onCreateOptionMenu()  را حذف کنید. آن را برای این اپلیکیشن احتیاج ندارید.

اگر در حال کار با اندروید استودیو هستید، می‌توانید اپلیکیشنتان را هم اکنون اجرا کنید. اما اتفاق خاصی نمی‌افتد. با کلیک کردن بر روی دکمه Send ، فعالیت دوم شروع به اتفاق می‌کند؛ اما از همان لی اوت پیش فرض Hello World  که توسط تمپلیت ارائه شده استفاده می‌کند. در مراحل بعدی آموزش خواهیم داد که چطور آن را به روز رسانی کنید.

طراحی سایت,وبرند,وب رند,webrend,اندروید استودیو,ساخت برنامه اندروید,اپلیکیشن اندرویدی,ساخت اپلیکیشن با اندروید