مقالات آموزشی

معرفی Intent در اندروید و چگونگی پیاده سازی آن

Intent چیست؟

Intent در لغت، به معنای قصد انجام کاری می باشد. در اندروید نیز از این تعریف دور نیست; به بیانی دیگر، ما با استفاده از Intent پیام ها و حتی دستوراتی را برای سیستم عامل اعلام میکنیم تا سیستم عامل بتواند بر روی آن ها پردازش کند. در بیان ساده تر، Intent واسطی است میان اجزا های مختلف یک پروژه درون یک اپلیکیشن و یا حتی چند اپلیکیشن.

کاربرد های فراوانی برای اینتنت وجود دارد که ساده ترین و در عین حال یکی از پراستفاده ترین آن ها، انتقال بین دو Activity می باشد. مثلا در نظر بگیرید که در یک Activity، سه Button به نام های Home,main page,Exit طراحی کردیم و می خواهیم هرکدام کار خاصی انجام دهند. بدیهی است که عملیات مربوط به هر Button در Activity های مجزا از هم قرار بگیرند. به منظور این کار سه اکتیوتی برای هر Button تعریف کرده و جهت انتقال به هرکدام، از اینتنت استفاده میکنیم.

همانطور که در تصویر متحرک بالا مشاهده میکنید، با کلیک بر روی هر Button، به اکتیویتی جدیدی منتقل می شویم.

انواع اینتنت ها

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

Implicit intent , Explicit intent.

Explicit intent:

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

ابتدا می خواهیم نحوه ی استفاده از این روش را با هم بررسی کنیم.

برای شروع کار، داخل اندروید استودیو رفته و یک پروژه جدید ایجاد میکنیم. در این پروژه همانند پروژه های قبلی، از قالب Empty Activity استفاده میکنیم و وارد برنامه می شویم.

اکنون به قسمت Xml پروژه رفته و همانطور که در پروژه های قبلی نیز به وضح دیده میشد، تنها یک TextView با مقدار Hello World می باشد. نوع لایه را Linear Layout انتخاب میکنیم.

حال باید یک Button به پروژه اضافه کنیم تا با کلیک بر روی آن به اکتیویتی مقصد منتقل شویم. حال باید اکتیویتی جدیدی را که قرار است به عنوان مقصد انتخاب شود، ایجاد کنیم. مانند دفعات قبل با قالب Empty Activity ایجاد میکنیم.

در این اکتیویتی جدید قصد داریم داده ها و اطلاعاتی از جانب ما برای کاربر منتقل شود. یعنی با کلیک دکمه در اکتیویتی اصلی اپلیکیشن، به آن دسترسی پیدا کند. ما نام این Activity را Info می گذاریم و وارد مرحله ی بعد می شویم.

برای قسمت Xml این اکتیویتی جدید، به جای Linear layout این بار از Relative Layout استفاده میکنیم. بنابراین Xml اکتیویتی جدیدمان، مانند زیر خواهد بود:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_Info"
    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="ir.Padide_Tejarat.intent.Info">
</RelativeLayout>

و در قسمت Info.java کدهای زیر را مشاهده خواهید کرد:

package ir.Padide_Tejarat.intent;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
 
public class Info extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_Info);
    }
}

همانطور که در مقاله های قبلی نیز ذکر شد، هر Activity که به پروژه اضافه می شود، باید درون Manifest تعریف شود در غیر اینصورت از نظر سیستم عامل اندروید، این اکتیویتی اصلا وجود خارجی ندارد.! خوشبختانه در اندروید استودیو این عمل خودکار انجام می شود. Manifest پروژه ما قبل از ساخت اکتیویتی Info به اینصورت بود :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.Padide_Tejarat.intent">
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>

همانطور که مشاهده می کنیم، MainActivity درون تگ <activity> </activity> تعریف شده است. این نکته را در نظر داشته باشید که باید برای هر اکتیویتی که تعریف میکنیم، داخل تگ <activity> اضافه شود. پس اکتیویتی Info نیز باید در این تگ قرار بگیرد. بنابراین کد زیر را ملاحظه خواهید کرد:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.Padide_Tejarat.intent">
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Info"></activity>
    </application>
 
</manifest>

اکنون در Main_Activity ادامه راه را باهم بررسی میکنیم.

یک Button به نام “اندروید” ایجاد میکنیم و به پروژه اضافه میکنیم و مشخصات کلی آن از قبیل Id،Width,Height را نیز بر روی آن اعمال میکنیم.

اکنون قسمت Xml بصورت زیر خواهد بود:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    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="ir.Padide_Tejarat.intent.MainActivity"
    android:orientation="vertical">

    <Button
        android:text="اندروید"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_about"
        android:layout_marginTop="30pt"
        android:textSize="18sp"/>
</LinearLayout>

در مرحله ی  بعد، باید برای Button از intent برای جابه جایی استفاده کنیم. یعنی کاربر پس کلیک روی دکمه “ اندروید” باید به اکتیویتی About منتقل شود. برای این کار نیاز به رویداد onClick داریم. یک راه دیگری هم برای استفاده از رویداد onClick وجود دارد که هم ساده تر بوده و هم باعث نوشتن کدهای کمتری خواهد شد. این روش فراخوانی متد onClick در مواقع بسیاری از جمله اینتنت ها می تواند مورد استفاده قرار گیرد. در ابتدا باید ویژگی onClick را درون خصوصیات Button اضافه کنیم. این کار از بخش کد Layout و همینطور در قسمت Properties فیلد onClick، قابل انجام است. ما این ویژگی را با نام “GoToInfo” به Button اضافه میکنیم:

<Button
    android:text="اندروید"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/InfoBtn"
    android:layout_marginTop="30pt"
    android:textSize="20sp"
    android:onClick="GoToInfo" />

کار ما با Main_Activity و Layout آن تمام شده و اکنون باید به کلاس جاوای آن رفته و مقصد نهایی اینتنت را برای آن اعمال کنیم

جهت انجام این کار،کدهای زیر را در کلاس جاوای خود اعمال کنید:

package ir.Padide_Tejarat.intent;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
     
    public void GoToInfo(View v) {
         
    }
}

حال از کلاس intent یک شی جدید ایجاد می کنیم. مانند زیر:

public void GoToInfo(View v) {
    Intent Info_activity = new Intent(this, Info.class);
    startActivity(Info_activity);
}

اکنون پروژه ما به اتمام رسید. بنابراین هرزمان که بر روی “اندروید” کلیک میکنیم، به کلاس Info.java منتقل می شویم.

امیدوارم از خواندن این آموزش لذت برده باشید. جهت پرسش سوالات در مورد این مقاله، خوشحال می شویم با پاسخ به آن ها، به پیشرفت شما در این زمینه کمک ناچیزی کرده باشیم ^.^

آیا علاقه مند به یادگیری مباحث اندروید استودیو به صورت حرفه ای و کاربردی هستید؟ آیا برای کسب و کار آنلاین خود نیازمند اپلیکشن برای آن هستید؟

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

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

Author

مدیریت سایت

Leave a comment

نشانی ایمیل شما منتشر نخواهد شد.