اینتنت ها در اندروید و جابجایی بین اکتیویتی ها با اینتنت یا برقراری ارتباط بین اکتیویتی ها در اندروید ، در قسمت سیزدهم آموزش برنامه نویسی اندروید در ادامه مبحث مهم اکتیویتی ها در این بخش در رابطه با جابجایی بین اکتیویتی ها با استفاده از اینتنت ها (Intent) آموزش داده ایم و با مثالی مشخص نحوه کاربرد آن را مفصل شرح داده ایم.
توجه : برای مشاهده تصاویر در سایز اصلی بر روی آنها کلیک کنید.
برنامه شما میتواند یک یا تعدادی اکتیویتی داشته باشد.وقتی برنامه شما بیشتر از یک اکتیویتی داشته باشد گاها نیاز است تا از یک اکتیویتی به اکتیویتی دیگر برویم این کار را به وسیله اینتنت ها انجام میدهیم.
مثال زیر به شما نشان میدهد که چگونه یک اکتیویتی دیگر به پروژه اضافه کرده و بین اکتیویتی ها حرکت میکنیم.
ابتدا طبق آموزش های قبل پروژه جدیدی به نام IntentsPrj ایجاد کرده و یک اکتیویتی جدید با نام SecondActivity از مسیری که در تصویر زیر مشخص شده ایجاد میکنیم.
حال همانطور که در آموزش های قبل مفصل توضیح داده شد باید هر اکتیویتی جدیدی که ایجاد میکنیم را درون فایل manifest برنامه معرفی کنیم به همین دلیل دستورات پررنگ شده زیر را به فایل AndroidManifest.xml اضافه میکنیم
<activity
android:name=".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=".SecondActivity"
android:label="Second Activity">
<intent-filter>
<action android:name="learn.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
حال در این مرحله باید با کلیک راست یک کپی از فایل activity_main.xml (در مسیر res/layout) ایجاد میکنیم و در مسیر برروی res/layout کلیک راست کرده گزینه past را کلیک میکنیم و نام آن را به نام secodactivity.xml تغییر میدهیم حال نتیجه ای مطابق شکل زیر خواهیم داشت
حال میخواهیم درون فایل secondactivity.xml که در واقع نمای ظاهری SecondActiviy میباشد یک متن قرار دهیم درون فایل secondactivity.xml کدهای زیر را اضافه میکنیم
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is SecondActivity" />
حال در این مرحله باید activity_main.xml را تغییر داد چون برنامه بدین صورت است که از اکتیویتی main به اکتیویتی second برویم پس در activity_main.xml یک Button یا دکمه قرار میدهیم که با فشرده شدن به اکتیویتی دوم پرش کند. دستورات ایجاد Button نیز بدین صورت میباشد
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click to Display Second Activity"
android:onClick="onClick" />
حال در فایل SecondActivity.java برای مشخص کردن layout چنین کدنویسی میکنیم
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);
}
}
حال در مرحله اخر باید درون فایل MainActivity.java مشخص کنیم که با فشردن Button ایجاد شده به SecondActivity پرش کند پس در این فایل نیز کدهای پررنگ شده زیر را اضافه میکنیم
import android.os.Bundle;
import android.view.View;
import android.app.Activity;
import android.content.Intent;;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View v)
{
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
MainActivity.this.startActivity(intent);
}
}
همانوگونه که مشاهده میکنید پارامترهایی که برای شی کلاس Intent تعریف کردیم شامل کلاس جاری که میخواهیم از آن به کلاس بعد برویم و پارامتر دوم کلاس دوم که مقصد ما است قرار میدهیم با صفت class.
عبارات فوق را میتوان بدین صورت نیز نوشت
startActivity(new Intent(“learn.SecondActivity”));
همانگونه که مشاهده هرگاه دکمه کلیک شود از متد ()startActivity برای نمایش دادن SecondActivity از طریق ایجاد یک شی از کلاس Intent و ارسال نام فیلتر (SecondActivity (learn.SecondActivity به عنوان آرگومان استفاده میشود.
توجه:
کد startActivity() در دستورات فوق را میتوان به صورت زیر نیز نوشت:
startActivity(new Intent(this, SecondActivity.class));
اما باید توجه داشت که تنها درصورتی میتوان از این گونه دستور استفاده کرد که اکتیویتی فراخوانی شده (مقصد) در پروژه جاری قرار داشته باشد.
حال میتوان برنامه را اجرا کرد و نتیجه را طبق شکل زیر مشاهده کرد.
همانگونه که میدانید یک اکتیویتی از یک بخش رابط کاربری (برای مثال main.xml) و بخش کلاس (مثلا MainActivity.java) تشکیل شده بنابراین هرگاه بخواهید یک اکتیویتی دیگر را ایجاد کنید باید ای دو بخش را نیز ایجاد کنید. در فایل manifest برنامه اکتیویتی جدید خود را چنین معرفی کردیم
<activity
android:name=".SecondActivity"
android:label="Second Activity">
<intent-filter>
<action android:name="learn.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
بخش های مختلف اکتیویتی فوق بدین شرح است