ارتباط بین activity ها با استفاه از intent ها

بسم الله الرحمن الرحیم

ارتباط بین activity ها با استفاه از intent ها

فصل دوم-بخش  ششم

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

  • در Eclipse  ابتدا یک پروژه جدید  به نام  UsingIntent. ایجاد می کنیم

بر روی Packaage Name  در زیر شاخه src  کلیک راست می کنیم و سپس  new->classراانتخاب می کنیم

ارسال داده بین Activity های مختلف دراندروید

  • نام آن را 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 دهید

ارسال داده بین Activity های مختلف دراندروید

محتوای فایل 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  های مختلف

توضیحات

همان طور که  یاد گرفته اید یک 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  درون  همین  پروژه  فراخوانی و صدا زده شود.

نظرات (۰)

هيچ نظري هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی