یک فنجان مشاوره
مهـمـان مــا باشیـد

شـمـــاره تــمــاس
031-36628509

نحوه استفاده از intent و finish در اندروید استودیو

انتشار 17 فوریه 2019
دیدگاه ها 2 دیدگاه
زمان تقریبی مطالعه
گردآوری پدیده تجارت

در یک اپلیکیشن ممکن است چندین صفحه یا اکتیویتی وجود داشته باشد. برای اینکه از یک اکتیویتی به اکتیویتی دیگر منتقل شویم لازم است از intent استفاده کنیم.در واقع کار intent ها انتقال از یک اکتیویتی به اکتیویتی دیگر می باشد. در این مقاله به بررسی نحوه استفاده از intent و finish در اندروید استودیو را بررسی می کنیم

عملکرد intent با تصویر:

همانطور که در تصویر بالا می بینید وقتی از Activity1 به 2Activity می رویم اکتیویتی دوم روی اکتیویتی اول قرار می گیرد و وقتی از 2Activity به Activity1 برویم، اکتیویتی اول روی اکتیویتی دوم قرار می گیرد.

پس وقتی برای انتقال اکتیویتی ها از intent استفاده کنیم ، اکتیویتی ها روی هم قرار می گیرند. در این حالت با هر بار کلیک بر روی دکمه ی Back گوشی ، اکتیویتی به اکتیویتی زیرین منتقل می شود. برای درک بهتر به تصویر زیر دقت کنید:

در این تصویر، به کمک intent از Activity3 به Activity2 منتقل شدیم. یعنی الان در صفحه ی دوم قرار داربم و انتظار می رود با کلیک روی دکمه ی Back گوشی ، به صفحه ی اول منتقل شویم. اما به Activity3 می رویم چرا؟ چون Activity3 لایه ی زیرین Activity2 می باشد.

پس اگر چندین صفحه ی تو در تو داشته باشیم ، باید در دکمه ی Back گوشی intent تعریف کنیم تا به اشتباه به صفحه ی زیرین منتقل نشویم.

اما راه حل آسان تری برای حل این مشکل وجود دارد و آن استفاده از finish بجای intent است.

عملکرد finish به اینصورت است که بجای اینکه اکتیویتی روی اکتیویتی دیگر قرار گیرد، اکتیویتی که finish میشود از بین می رود. بعنوان مثال در تصویر بالا اگر برای انتقال از Activity3 به Activity2 از finish استفاده کنیم، Activity3 از بین می رود و به Activity2 منتقل می شویم. در این حالت مشکل دکمه ی Back نیز حل می شود.برای درک بهتر قضیه به تصویر زیر دقت کنید:

می خواهیم با یک پروژه تفاوت intent  و finish را ببینیم.

کد xml_MainActivity

یک پروژه ی جدید ایجاد کنید و داخل xml کد زیر را وارد کنید:

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_GoToActivity2"
        android:layout_width="200dp"
        android:layout_height="60dp"
        android:text="Activity2"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_GoToActivity3"
        android:layout_width="200dp"
        android:layout_height="60dp"
        android:text="Activity3"
        android:textSize="18sp"
        android:layout_marginTop="10dp"/>

</LinearLayout>

 

در این اکتیویتی دو Button قرار دادیم.یکی برای انتقال به Activity2 و یکی برای انتقال به Activity3.

پس لازم است دو اکتیویتی بنام های Activity2  و Activity3 ایجاد کنیم:

داخل xml اکتیویتی2 و اکنیویتی3 ، کد زیر را وارد کنید:

کد xml_Activity2

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context=".Activity2">

    <Button
        android:id="@+id/btn_GoToMain_WithIntent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="GoToActivity2"
        android:textSize="20sp"
        android:textStyle="bold" />
</LinearLayout>

کد xml_Activity3

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context=".Activity3">

    <Button
        android:id="@+id/ btn_GoToMain_WithFinish"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="GoToActivity3"
        android:textSize="20sp"
        android:textStyle="bold" />
</LinearLayout>

 

داخل هر اکتیویتی یک دکمه قرار دادیم برای بازگشت به اکتیویتی اصلی.

کد Java_MainActivity

داخل کد جاوای MainActivity، کد زیر را وارد کنید:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button btn_GoToActivity2, btn_GoToActivity3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn_GoToActivity2 = findViewById(R.id.btn_GoToActivity2);
        btn_GoToActivity3 = findViewById(R.id.btn_GoToActivity3);

        btn_GoToActivity2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, Activity2.class);
                startActivity(i);
            }
        });
        
        btn_GoToActivity3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent MainActivity.this, Activity3.class);
                startActivity(i);
            }
        });
    }
}

توضیح کد بالا:

ابتدا دو Button تعریف کرده، آن ها را findViewById می کنیم و برای هر کدام setOnClickListener می نویسیم.

می خواهیم با کلیک بر روی دکمه ی btn_GoToActivity2 به Activity2 منتقل شویم. برای اینکار داخل onClick این Button، یک intent تعریف می کنیم و به پارامترهای ورودی آن ، اکتیویتی که در آن قرار داریم و اکتیویتی که می خواهیم به آن منتقل شویم را معرفی می کنیم، سپس برای انتقال به اکتیویتی جدید باید از startActivity استفاده کنیم وintent را به ورودی آن بدهیم:

btn_GoToActivity2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = new Intent(MainActivity.this, Activity2.class);
        startActivity(i);
    }
});

برای دکمه ی btn_GoToActivity3 نیز به همین صورت عمل می کنیم با این تفاوت که داخل intent،  Activity3 را برای انتقال معرفی می کنیم.

گفتیم با کلیک بر روی دکمه ی btn_GoToActivity2، به Activity2 منتقل می شویم. داخل این اکتیوتی یک دکمه قرار دارد که می خواهیم با کلیک بر روی این دکمه با intent به صفحه ی Main منتقل شویم. داخل کد جاوای Activity2 کد زیر را وارد کنید:

کد Java_Activity2

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Activity2 extends AppCompatActivity {
    Button btn_GoToMain_WithIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);

        btn_GoToMain_WithIntent = findViewById(R.id.btn_GoToMain_WithIntent);
        btn_GoToMain_WithIntent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(Activity2.this , MainActivity.class);
                startActivity(i);
            }
        });
    }
}

و با کلیک بر روی دکمه ی btn_GoToActivity3، به Activity3 منتقل می شویم. داخل این اکتیوتی یک دکمه قرار دارد که می خواهیم با کلیک بر روی این دکمه با finish به صفحه ی Main منتقل شویم. داخل کد جاوای Activity3 کد زیر را وارد کنید:

کد Java_Activity3

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Activity3 extends AppCompatActivity {
    
    Button btn_GoToMain_WithFinish; 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_3);

        btn_GoToMain_WithFinish = findViewById(R.id.btn_GoToMain_WithFinish);
        btn_GoToMain_WithFinish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
}

 

با دستور finish، Activity3 بسته می شود و به اکتیویتی قبلی یعنی Activity2 منتقل می شود.

خروجی پروژه

ابتدا وارد صفحه ی Main می شویم:

با استفاده از intent ، با کلیک روی GoToACTIVITY2 به Activity2 و با کلیک روی GoToACTIVITY3 به Activity3 منتقل می شویم.

جابجایی به کمک intent

کاربر ابتدا در صفحه ی Main قرار دارد.با کلیک بر روی دکمه ی  GoToActivity2 با استفاده از intent به Activity2 منتقل می شود و سپس با کلیک روی دکمه ی ACTIVITY2 با استفاده از intent به صفحه ی Main می رود.

روند جابجایی اکتیویتی ها بصورت زیر است:

الان کاربر در صفحه ی 3 قرار دارد و از آنجایی که این صفحه، صفحه ی Main است، انتظار دارد با کلیک روی دکمه ی Back از اپلیکیشن خارج شود. ولی با کلیک روی دکمه ی  Back، به صفحه ی 2 منتقل می شود. دوباره با زدن دکمه ی Back به صفحه ی 1 منتقل می شود و در این قسمت با کلیک روی Back از اپلیکیشن خارج می شود.

جابجایی به کمک finish

کاربر ابتدا در صفحه ی Main قرار دارد.با کلیک بر روی دکمه ی  GoToActivity3 با استفاده از intent به Activity3 منتقل می شود و سپس با کلیک روی دکمه ی ACTIVITY3 با استفاده از finish به صفحه ی Main می رود.

روند جابجایی اکتیویتی ها بصورت زیر است:

الان کاربر در صفحه ی 1 قرار دارد و با کلیک روی دکمه ی Back از اپلیکیشن خارج می شود.

در این مقاله تفاوت جابجایی اکتیویتی ها توسط intent و finish را بیان کردیم. در مقاله ی بعدی سعی داریم چگونگی انتقال اطلاعات توسط intent و finish را آموزش دهیم.

 

نویسنده: الهه ابراهیمی

مقالات مرتبط

شاید علاقمند به دیدن این مقالات نیز باشید
(آرشیو کامل)

منظور از طراحی اختصاصی سایت چیست؟ منظور از طراحی اختصاصی سایت چیست؟ مقالات طراحی وب سایت

پدیده تجارت

15 ژانویه 2014

مهاجرت برنامه نویسان و شرایط برتر آن مهاجرت برنامه نویسان و شرایط برتر آن مقالات طراحی وب سایت

پدیده تجارت

28 جولای 2018

آموزش مجازی دیجیتال مارکتینگ اصفهان آموزش مجازی دیجیتال مارکتینگ اصفهان مقالات برندینگ

پدیده تجارت

16 مارس 2020

نکات کلیدی که برای سفارش یک وب سایت نیازه بدونی!! نکات کلیدی که برای سفارش یک وب سایت نیازه بدونی!! مقالات طراحی وب سایت

پدیده تجارت

17 آوریل 2017

آموزش طراحی سایت با لاراول در اصفهان آموزش طراحی سایت با لاراول در اصفهان مقالات طراحی وب سایت

پدیده تجارت

11 ژوئن 2020

بررسی ویژگی های اندروید9 بررسی ویژگی های اندروید9 مقالات موبایل

پدیده تجارت

27 فوریه 2020

چگونه یک طراح سایت حرفه ای  شویم ؟(قسمت اول) چگونه یک طراح سایت حرفه ای شویم ؟(قسمت اول) مقالات طراحی وب سایت

پدیده تجارت

15 مارس 2022

نکات مهم قبل از سفارش سایت ::حتما مطالعه کنید!!:: نکات مهم قبل از سفارش سایت ::حتما مطالعه کنید!!:: مقالات طراحی وب سایت

پدیده تجارت

06 آگوست 2013

چگونه یک سایت استاندارد داشته باشیم؟ چگونه یک سایت استاندارد داشته باشیم؟ مقالات طراحی وب سایت

پدیده تجارت

11 دسامبر 2017

9 روش افزایش فروش به صورت آنلاین چیست؟ 9 روش افزایش فروش به صورت آنلاین چیست؟ مقالات تجارت الکترونیک

پدیده تجارت

05 آوریل 2022

آموزش طراحی Seekbar در اندروید استودیو آموزش طراحی Seekbar در اندروید استودیو مقالات موبایل

پدیده تجارت

09 ژوئن 2018

دیدگاه کاربران

2 دیدگاه

دیدگاه‌های نحوه استفاده از intent و finish در اندروید استودیو

  1. آموزش شما بسیار عالی و جذاب بود بنده با حداقل اصلاحات این برنامه را Run کردم.


    1. انجام وظیفس دوست عزیز…


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *