سبد (0)

اتصال اکتیویتی ها به یکدیگر

اتصال دادن اکتیویتی ها به یکدیگر با استفاده از اینتنت ها

زمانی که برنامه ی شما بیشتر از یک اکتیویتی داشته باشد,بعضی مواقع نیاز است تا از یک اکتیویتی به اکتیویتی دیگری بروید .برای انجام این کار باید از اینتنت ها استفاده کنید.در قسمت زیر به شما نشان می دهیم که چگونه یک اکتیویتی دیگر به پروژه اضافه و بین اکتیویتی ها حرکت کنید.

1.یک پروژه جدید با نام Intent بسازید.

2.در زیر مجموعه ی پوشه ی src روی پکیج کلیک راست کنید و به قسمت New و Class بروید.

 

3.اسم کلاس جدید را secondActivity بگذارید.

4.کدهای زیر را وارد فایل AndroidManifest.xml کنید.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.PRG.intent"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <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:label="Second Activity"
            android:name=".SecondActivity">
            <intent-filter>
                <action  android:name="com.PRG.SecondActivity"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

5.یک کپی از فایل main.xml که در فولدر res/layout قرار دارد ایجاد کنید.برای این کار روی main.xml کلیک راست کنید و گزینه ی کپی را بزنید و سپس روی res/layout کلیک راست کرده و Paste را کلیک کنید.فایل کپی شده را به secondactivity.xml تغییر نام دهید .

6.فایل secondactivity.xml را مانند زیر تغییر دهید.

secondactivity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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="com.PRG.intent.MainActivity" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Second Activity" />

</LinearLayout>

7.قسمت های زیر را در فایل SecondActivity.java اضافه کنید.

SecondActivity.java

package com.PRG.intent;

import android.app.Activity;
import android.os.Bundle;

public class SecondActivity extends Activity {
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondactivity);
    }

}

8.قسمت های زیر را به فایل main.xml اضافه کنید.

main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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="com.PRG.intent.MainActivity" >

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Display Second Activity"
        android:onClick="OnClick" />

</RelativeLayout>

9.فایل MainActivity.java را به شکل زیر اصلاح کنید.

MainActivity.java

package com.PRG.intent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    public void onClick(View view){
        startActivity(new Intent("com.PRG.SecondActivity"));
    }

}

10.برنامه را اجرا کنید.

روش کار به این صورت است که همانطور که قبلا توضیح داده شد یک اکتیویتی از یک بخش رابط کاربری مثل main.xml و بخش کلاس مثل intentActivity.java تشکیل شده است.بنابراین زمانی که شما میخواهید یک اکتیویتی دیگری ایجاد کنید باید این دو بخش را هم ایجاد کنید.در فایل AndroidManifest.xml قسمت های زیر افزوده شده است:

Manifest

 <activity
            android:label="Second Activity"
            android:name=".SecondActivity">
            <intent-filter>
                <action  android:name="com.PRG.SecondActivity"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

در حال حاضر که یک اکتیویتی جدید به برنامه اضافه کردید باید به نکاتی توجه کنید:

  • نام اکتیویتی افزوده شده SecondActivity می باشد.
  • Lable در نظر گرفته شده برای آن Second Activity نام دارد.
  • نام اینتنت فیلتر اکتیویتی جدید net.PRG.SecondActivity است.زمانی که اکتیویتی های دیگری این اکتیویتی را فراخوانی کنند از این نام استفاده می کنند.سعی کنید از یک نام منحصر به فرد استفاده کنید تا احتمال تداخل با نام دیگر اینتنت ها کاهش یابد.
  • گروه دسته بندی این اینتنت فیلتر  android.intent.category.DEFAULT نام دارد.هرگاه این را به اینتنتی اضافه کنید  اکتیویتی می تواند با استفاده از متد ()startActivity توسط اکتیویتی دیگر فراخوانی گردد.
  • هرگاه روی دکمه کلیک شود ,از متد ()startActivity جهت نمایش SecondActivity از طریق ایجاد یک کلاس Intent و ارسال نام فیلتر SecondActivity به عنوان آگومان استفاده می شود.

onClick

public void onClick(View view){
        startActivity(new Intent("com.PRG.SecondActivity"));
    }

اکتیویتی های اندروید می توانند به وسیله ی برنامه های در حال اجرا فراخوانی گردند.به عنوان مثال می توان یک پروژه جدید ایجاد نمود و با استفاده از اینتنت فیلتر net.PRG.SecondActivity ,اکتیویتی SecondActivity را فراخوانی کرد.

اگر اکتیویتی که قصد فراخوانی آن را دارید در پروژه ی کنونی قرار دارد,کد بالا را می توان به شکل زیر نوشت:

Start

startActivity(new Intent(this, SecondActivity.class));

توجه داشته باشید که تنها زمانی می توان از این کد استفاده کرد که اکتیویتی مقصد در پروژه ای باشد که اکتیویتی کنونی در حال اجرا است.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه