ارتباط بین activity ها با استفاه از intent ها
بسم الله الرحمن الرحیم
ارتباط بین activity ها با استفاه از intent ها
فصل دوم-بخش ششم
یک برنامه اندروید می تواندصفر یا بیشتر activity د اشته باشد زمانی که برنامه شما بیشتر از یک activity اشته باشد شما اغلب نیاز دارید که بین activity ها ارتباط بر قرار کنید.که ارتباط بین activity هااز طریق چیزی انجام می شودکه به عنوان intent شناخته می شود..بهترین راه برای درک این مفهوم ش
بسم الله الرحمن الرحیم
ارتباط بین activity ها با استفاه از intent ها
فصل دوم-بخش ششم
یک برنامه اندروید می تواندصفر یا بیشتر activity د اشته باشد زمانی که برنامه شما بیشتر از یک activity اشته باشد شما اغلب نیاز دارید که بین activity ها ارتباط بر قرار کنید.که ارتباط بین activity هااز طریق چیزی انجام می شودکه به عنوان intent شناخته می شود..بهترین راه برای درک این مفهوم شرح آن با یک مثال می باشد.که در مثال زیر ابتدا یک activityدیگرایجاد می کنیم.و سپس بین این دو activity با استفاده از intent ارتباط بر قرار می کنیم.
- در Eclipse ابتدا یک پروژه جدید به نام UsingIntent. ایجاد می کنیم
بر روی Packaage Name در زیر شاخه src کلیک راست می کنیم و سپس new->classراانتخاب می کنیم
- نام آن را SecondActivity قرار میدهیم
آنهای که با Bold مشخص کرده ایم در فایل AndroidManifest.xml قرار دهید.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.MehrdadJavidi.usingintent"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="14" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.MehrdadJavidi.usingintent.MainActivity"
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=".SecoundActivity"
android:label="SecoundActivity">
<intent-filter >
<action android:name=" com.MehrdadJavidi.usingintent.SecoundActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
یک کپی از فایل main.xml (res/layout) باکلیک راست کردن بروی آن و انتخاب copy وسپس past انجام هید.سپس نام آن قرار secondactivity.xml دهید
محتوای فایل secondactivity.xml را تغییر دهید
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is the Second Activity!" />
</LinearLayout>
درفایل جاوا SecondActivity.java دستورات زیر قرار دهید.
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity);
}
}
محتوای فایل main.xmlرا تغیر دهید
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Display second activity" />
</LinearLayout>?
در فایل UsingIntentActivity.java دستورات زیر را وارد نمایید
package com.MehrdadJavidi.usingintent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class UsingIntentActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}public void onClick(View view) {
startActivity(new Intent("com.MehrdadJavidi.SecondActivity"));
}
}
F11 را بزنید زمانی که برنامه اجرا شد در Activity اول روی دکمه کلیک کنید مشاهده می کنید که activity دوم اجرا می شود.
توضیحات
همان طور که یاد گرفته اید یک activity از دو قسمت تشکیل شده است قسمت اول UI (که در این جا main.xml)و قسمت دوم فایل کلاس (UsingIntentActivity.java) . از این رو زمانی که شما می خواهید یک activity به برنامه اضافه کنید باید این 2 قسمت را اضافه کنید.
در فایلAndroidManifest.xml تنظیمات activity که می خو.اهید اضافه کنید را مانند زیر وارد کنید.
<activity
android:name=".SecondActivity"
android:label=" Second Activity" >
<intent-filter>
<action android:name="com.MehrdadJavidi.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
زمانی که شما یک activity به برنامه خود اضافه کرده اید باید به نکات زیر توجه کنید
- نام (Class) activity جدیدی که اضافه کرده اید SecondActivity.
- Label مربرط به activity که اضافه کرده اید Second Activity
- نام intent filter برای activity جدید که اینجا com.MehrdadJavidi.SecondActivity می باشد activity دیگر اگر بخواهد این را اجرا کند از این نام استفاد ه می کند. به طور ایده ال شما از معکوس شده نام Domain همراه با نام activity استفاده می کنیم. زیرا این کار شانس اینکه activity دیگری با این نام برای یک برنامه دیگر یک باشد را کاهش می دهد.
(در قسمت بعد شرح می دهم دستورتی که نام Intent Filter ها یکی باشد چه اتفاقی می افتد.)
- Category مربوط intent Filter در اینجا android.intent.category.DEFAULT می باشد شما وقتی این را اضافه می کنید activity موجود توسط متد startActivity() به ساد گی اجرا می شود که کوتاه و راحتر می باشد.
اگر از Category استفاده نکنید دستورات زیر را برای اجرا شدن می نویسیم.
startActivity(new Intent(this, SecondActivity.class));
با این حال از این روش زمانی استفاده می کنیم. که بخواهیم این activity درون همین پروژه فراخوانی و صدا زده شود.