ایجاد اکتیویتی در اندروید

در این قسمت می خواهیم یاد بگیریم که چطوری علاوه بر ساختن Intent داده های دلخواهمون رو درون اون قرار بدیم و سپس اون رو به اکتیوتی مقصد ارسال کنیم .

Intent ها در واقع مجموعه ای از پیام های ناهمگام (asynch message) هستند که به مولفه های برنامه ی کاربردی (app components) اجازه می دهند از دیگر کامپوننت های اندروید قابلیت درخواست کند (intent در حقیقت یک مکانیزم نرم افزاری می باشد که برای کاربر این امکان را فراهم می کند، بین زیرروال ها یا عملکردهای برنامه های کاربردی هماهنگی ایجاد کرده تا یک وظیفه یا task معینی به انجام برسد). intent ها همچنین این قابلیت را ایجاد می کند که علاوه بر کامپوننت های یک برنامه با کامپوننت های برنامه های کاربردی دیگر نیز تعامل داشته باشید. به عنوان مثال می توان به activity ای اشاره کرد که فعالیتی مثل گرفتن عکس را که متعلق به activity ای دیگر (خارجی) است را راه اندازی (trigger) کند.

Intent ها اشیایی از نوع android.content.intent هستند. کدی که شما می نویسید قادر است آن ها را به سیستم اندروید ارسال کرده تا از این طریق کامپوننت های موردنظر شما تعریف شوند. به طور مثال، می توانید با استفاده از متد () StartActivity به intent دستور بدید که برنامه ی معینی را راه اندازی کند.

Intent از طریق Bundle (به طور معمول به منظور ارسال اطلاعات بین activity های مختلف اندروید بکار می رود) قادر است اطلاعات لازمه را دربرگیرد، حال این اطلاعات توسط کامپوننت دریافت کننده (receiving component) مورد استفاده قرار می گیرد.

راه اندازی activity مورد نظر (به وسیله ی متد (startActivity intent) )

جهت راه اندازی و اجرای activity، از متد startActivity (intent) استفاده کنید. متد مذکور در شی Context تعریف شده که توسط (کلاس) Activity بسط و توسعه داده می شود.

ابتدا باید فایل Xml مربوط به Main Activity را به صورت زیر طراحی کنیم :

که در اینجا ابتدا یک Edit Text و یک Button به فایل Xml مربوط به Main Activity اضافه می کنیم.

 

یک متد در MainActivity.java به نام () sendMessage اضافه کنید .

- 1در برنامه فایل app > java > com.example.myfirstapp > MainActivity.java   همانطور که در زیر نشان داده شده است:


public class MainActivity extends AppCompatActivity {
   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView
(R.layout.activity_main);
   
}

   
/** Called when the user taps the Send button */
   
public void sendMessage(View view) {
       
// Do something in response to button
   
}
}

شما ممکن است با خطا هایی مواجه شوید، زیرا اندروید استودیو نمیتواند کلاس View را اضافه یا import کند. بنابراین بر روی view کلیک کنید، سپس با فشار دادن Alt + Enter (یا Option + Enter در Mac) آنرا Import کنید.

 

2 - حالا برای صدا زدن این متد از دکمه مورد نظر به فایل activity_main.xml بروید:

1 – 2 – بر روی دکمه مورد نظر در صفحه .xml مربوطه کلیک کنید.

2 – 2 - در پنجره Properties، property of onClick را انتخاب کنید و sendMessage [MainActivity] را از لیست کشویی انتخاب کنید.

 

در حال حاضر وقتی که دکمه زده می شود، متد () sendMessage صدا زده می شود.

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

    دسترسی عمومی (public access)
    مقدار برگشتی (A void return value) void
    یک View به عنوان تنها پارامتر (شی View Object است که روی آن کلیک شده است)

بعد، شما این متد را برای خواندن محتویات داخل Edit Text استفاده می کنید و این متن را به Activity دیگری منتقل می دهید.

    ساخت یک intent

یک intent شیء است که اتصال اجرایی بین اجزای جداگانه، مانند دو Activity را فراهم می کند. Intent نشان دهنده برنامه ای است که قصد انجام کاری را دارد. Intent ها کاربرد های گستره ای دارند شما می توانید از Intent برای طیف گسترده ای از وظایف استفاده کنید، اما در این درس، intent برای انتقال اطلاعات به یک Activity و رفتن به Activity دیگر استفاده می شود.

در MainActivity.java، ثابت EXTRA_MESSAGE و کد ()sendMessage را اضافه کنید، همانطور که در اینجا نشان داده شده است:

public class MainActivity extends AppCompatActivity {
   
public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView
(R.layout.activity_main);
   
}

   
/** Called when the user taps the Send button */
   
public void sendMessage(View view) {
       
Intent intent = new Intent(this, DisplayMessageActivity.class);
       
EditText editText = (EditText) findViewById(R.id.editText);
       
String message = editText.getText().toString();
        intent
.putExtra(EXTRA_MESSAGE, message);
        startActivity
(intent);
   
}
}

در این قسمت وقتی کد ها را به متد sendMessage()با خطاهایی روبرو خواهید شد ، بنابراین Alt + Enter را فشار دهید (یا Option + Return در Mac) تا کلاس های شما Import شوند:

 

 

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

خطای DisplayMessageActivity باقی می ماند، اما این درست است؛ شما این را در بخش بعدی اصلاح کنید.

در اینجا ()  sendMessageدارای موارد زیر است:

    سازنده قصد دارد دو پارامتر داشته باشد:

1 – یک متن به عنوان اولین پارامتر (به عنوان کنید برای تشخیص در Activity بعدی) که شما مشخص میکنید چی باشد و در اکتیویتی دوم با این کلید به مقدارتون اشاره میکنید و ان را فراخوانی میکنید.

2 – مقداری که میخواهید از این اکتیویتی انتقال بدهید.

    روش () putExtra مقدار EditText را به intentاضافه می کند. یک intentمی تواند انواع داده را به ارسال کند. مقدار کلید مورد نظر برای ارسال EXTRA_MESSAGE یک ثابت عمومی است زیرا Activity بعدی از کلید برای بازیابی مقدار متن استفاده می کند. این یک روش خوب برای تعریف کلید است.با این روش می توان مشخص کرد که کلیدها منحصر به فرد هستند.

    در قسمت () startActivity شما باید Intent مورد نظر را وارد کنید.

حالا باید Activity دوم را به نام DisplayMessageActivity ایجاد کنیم.

1 - در پنجره پروژه، روی پوشه App کلیک راست کرده و New> Activity> Empty Activity را انتخاب کنید.

 

2 - در پنجره پیکربندی Activity، «DisplayMessageActivity» را برای نام Activity وارد کنید و روی Finish را کلیک کنید.

 

اندروید استودیو به طور خودکار سه موارد زیر را اضافه می کند:

    فایل را ایجاد می کند.
    فایل layout مربوط به را ایجاد می کند.
    اجزای <Activity> مورد نیاز در را اضافه می کند.

اگر برنامه را اجرا کنید بر روی دکمه در Main Activity کلیک کنید، Activity دوم نمایش داده می شود اما خالی است.حال باید    Text View را به فایل Xml DisplayMessageActivity اضافه کنیم.

    Øاضافه کردن text view به فایل

Activity جدید شامل یک فایل xml خالی است، بنابراین در حال حاضر شما می توانید Text View را در هر جایی از صفحه مورد نظر اضافه کنید.

1 – باز کردن فایل app > res > layout > activity_display_message.xml

2 - روی Turn On Autoconnect را در نوار ابزار کلیک کنید.

 

 

3 - از پنجره Pallete، TextView را انتخاب و انرا به صفحه اضافه کنید.

در صورت تمایل، برخی از تنظیمات مربوط به Edit Text را شما می توانید در پنجره Properties و تغییر خصوصیاتی مانند textSize و textColor انجام دهید.

    نمایش پیغام در Edit Text

اکنون Activity دوم را برای نمایش پیامی که توسط اولین Activity ارسال شده است تغییر می دهیم.

1 - در DisplayMessageActivity.java، کد زیر را به متد ()onCreate اضافه کنید:

@Override
protected void onCreate(Bundle savedInstanceState) {
   
super.onCreate(savedInstanceState);
    setContentView
(R.layout.activity_display_message);
   
   
// Get the Intent that started this activity and extract the string
   
Intent intent = getIntent();
   
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

   
// Capture the layout's TextView and set the string as its text
   
TextView textView = (TextView) findViewById(R.id.textView);
    textView
.setText(message);
}

2 - Alt + Enter را فشار دهید تا کلاس ها Import شوند.

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;

    اضافه کردن navigation

هر صفحه در برنامه شما که به عنوان صفحه اصلی نیست باید navigation یا یک دکمه Back قرار داده شود تا کاربر بتواند با استفاده از دکمه Back در نوار Toolbar، به صفحه اصلی بازگردد.

بنابراین برای انجام این کار فایل app > Manifests > AndroidManifest.xml را باز کنید، در تگ <activity> مربوط به DisplayMessageActivity موارد زیر را جایگزین کنید:

<activity android:name=".DisplayMessageActivity"
         
android:parentActivityName=".MainActivity" >
   
<!-- The meta-data tag is required if you support API level 15 and lower -->
   
<meta-data
       
android:name="android.support.PARENT_ACTIVITY"
       
android:value=".MainActivity" />
</activity>

سیستم Android اکنون به طور خودکار دکمه Back را در نوار برنامه را اضافه می کند.

حالا برنامه را اجرا نمایید

 

 و اکتیویتی دوم

 

 

 

 

منبع:

https://developer.android.com/training/basics/firstapp/starting-activity.html#DisplayMessage

 

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید

جوملا فارسی