نحوه پیاده سازی 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 اکتیویتی جدیدمان، مانند زیر خواهد بود:
encoding="utf-8"?><br /> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> xmlns:tools="http://schemas.android.com/tools"<br /> android:id="@+id/activity_Info"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent"<br /> android:paddingBottom="@dimen/activity_vertical_margin"<br /> android:paddingLeft="@dimen/activity_horizontal_margin"<br /> android:paddingRight="@dimen/activity_horizontal_margin"<br /> android:paddingTop="@dimen/activity_vertical_margin"<br /> tools:context="ir.Padide_Tejarat.intent.Info"><br /> </RelativeLayout> <?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;</p><br /> <p>import android.support.v7.app.AppCompatActivity;<br /><br /> import android.os.Bundle;</p><br /> <p>public class Info extends AppCompatActivity {</p><br /> <p> @Override<br /><br /> protected void onCreate(Bundle savedInstanceState) {<br /><br /> super.onCreate(savedInstanceState);<br /><br /> setContentView(R.layout.activity_Info);<br /><br /> }<br /><br /> } 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"?><br /><br /> <manifest xmlns:android="http://schemas.android.com/apk/res/android"<br /><br /> package="ir.Padide_Tejarat.intent"></p><br /> <p> <application<br /><br /> android:allowBackup="true"<br /><br /> android:icon="@mipmap/ic_launcher"<br /><br /> android:label="@string/app_name"<br /><br /> android:supportsRtl="true"<br /><br /> android:theme="@style/AppTheme"><br /><br /> <activity android:name=".MainActivity"><br /><br /> <intent-filter><br /><br /> <action android:name="android.intent.action.MAIN" /><br /><br /> <category android:name="android.intent.category.LAUNCHER" /><br /><br /> </intent-filter><br /><br /> </activity><br /><br /> </application></p><br /> <p></manifest> <?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"?><br /><br /> <manifest xmlns:android="http://schemas.android.com/apk/res/android"<br /><br /> package="ir.Padide_Tejarat.intent"></p><br /> <p> <application<br /><br /> android:allowBackup="true"<br /><br /> android:icon="@mipmap/ic_launcher"<br /><br /> android:label="@string/app_name"<br /><br /> android:supportsRtl="true"<br /><br /> android:theme="@style/AppTheme"><br /><br /> <activity android:name=".MainActivity"><br /><br /> <intent-filter><br /><br /> <action android:name="android.intent.action.MAIN" /><br /><br /> <category android:name="android.intent.category.LAUNCHER" /><br /><br /> </intent-filter><br /><br /> </activity><br /><br /> <activity android:name=".Info"></activity><br /><br /> </application></p><br /> <p></manifest> <?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"?><br /><br /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /><br /> xmlns:tools="http://schemas.android.com/tools"<br /><br /> android:id="@+id/activity_main"<br /><br /> android:layout_width="match_parent"<br /><br /> android:layout_height="match_parent"<br /><br /> android:paddingBottom="@dimen/activity_vertical_margin"<br /><br /> android:paddingLeft="@dimen/activity_horizontal_margin"<br /><br /> android:paddingRight="@dimen/activity_horizontal_margin"<br /><br /> android:paddingTop="@dimen/activity_vertical_margin"<br /><br /> tools:context="ir.Padide_Tejarat.intent.MainActivity"<br /><br /> android:orientation="vertical"></p><br /> <p> <Button<br /><br /> android:text="اندروید"<br /><br /> android:layout_width="match_parent"<br /><br /> android:layout_height="wrap_content"<br /><br /> android:id="@+id/btn_about"<br /><br /> android:layout_marginTop="30pt"<br /><br /> android:textSize="18sp"/><br /><br /> </LinearLayout> <?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<br /><br /> android:text="اندروید"<br /><br /> android:layout_width="match_parent"<br /><br /> android:layout_height="wrap_content"<br /><br /> android:id="@+id/InfoBtn"<br /><br /> android:layout_marginTop="30pt"<br /><br /> android:textSize="20sp"<br /><br /> android:onClick="GoToInfo" /> <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" />
جهت انجام این کار،کدهای زیر را در کلاس جاوای خود اعمال کنید:
package ir.Padide_Tejarat.intent;</p><br /> <p>import android.support.v7.app.AppCompatActivity;<br /><br /> import android.os.Bundle;<br /><br /> import android.view.View;</p><br /> <p>public class MainActivity extends AppCompatActivity {</p><br /> <p> @Override<br /><br /> protected void onCreate(Bundle savedInstanceState) {<br /><br /> super.onCreate(savedInstanceState);<br /><br /> setContentView(R.layout.activity_main);<br /><br /> }</p><br /> <p> public void GoToInfo(View v) {</p><br /> <p> }<br /><br /> } 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 یک شی جدید ایجاد می کنیم. مانند زیر:
Java public void GoToInfo(View v) {<br /><br /> Intent Info_activity = new Intent(this, Info.class);<br /><br /> startActivity(Info_activity);<br /><br /> } public void GoToInfo(View v) { Intent Info_activity = new Intent(this, Info.class); startActivity(Info_activity); }
اکنون پروژه ما به اتمام رسید. بنابراین هرزمان که بر روی “اندروید” کلیک میکنیم، به کلاس Info.java منتقل می شویم.
امیدوارم از خواندن این آموزش لذت برده باشید. جهت پرسش سوالات در مورد این مقاله، خوشحال می شویم با پاسخ به آن ها، به پیشرفت شما در این زمینه کمک ناچیزی کرده باشیم ^.^
لطفا دیدگاه خود را در مورد اموزش نحوه پیاده سازی Intent در اندروید بیان کنید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.