آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

بستن (destroy کردن) و اجرای دوباره یک Activity (در اصطلاح، restart یا refresh کردن Activity)، با اشاره کاربر بر روی یک دکمه (Button)، در برنامه نویسی اندروید

در این مبحث قصد داریم آموزش بدهیم که چگونه می توانیم در یک Activity ، دکمه ای (Button) را قرار بدهیم که با اشاره بر روی آن دکمه، Activity بسته شده (destroy شود) و دوباره از ابتدا اجرا شود.

ابتدا در لایه گرافیکی Activity ، یک دکمه (Button) قرار می دهیم :


<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" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

سپس کدهای Activity را به صورت زیر می نویسیم (نام Activity را برابر Activity_3 در نظر گرفته ایم) :


package com.kelidestan.com;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Activity_3 extends Activity {
       
        private int restart_or_not = 0;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_3);
               
                Button b = (Button) findViewById(R.id.button1);
                b.setOnClickListener(new OnClickListener() {
                                                                 
                        @Override
                        public void onClick(View v) {
                                restart_or_not = 1;
                                finish();
                        }
                });
               
        }
       

        @Override
        protected void onDestroy() {
                // TODO Auto-generated method stub
                if(restart_or_not==1){
                        Intent intent = new Intent(this, Activity_3.class);
                        startActivity(intent);
                }
                super.onDestroy();
        }

       
}

ابتدا یک متغیر را تعریف کرده ایم که توسط آن تشخیص می دهیم که کاربر قصد restart کردن Activity را دارد یا خیر (مقدار پیش فرض آن برابر 0 است) :


private int restart_or_not = 0;

با اشاره کاربر بر روی دکمه (Button) کدهای زیر اجرا می شوند :


restart_or_not = 1;
finish();

ابتدا مقدار متغیر restart_or_not را به 1 تغییر می دهیم و پس روش finish اجرا می شود که برای بستن (destroy کردن) Activity به کار می رود، اما ما قصد داریم که بعد از بسته شدن، دوباره Activity اجرا شود، بنابراین روش onDestroy را به صورت زیر نوشته ایم :


@Override
protected void onDestroy() {
        // TODO Auto-generated method stub
        if(restart_or_not==1){
                Intent intent = new Intent(this, Activity_3.class);
                startActivity(intent);
        }
        super.onDestroy();
}

در این روش، ابتدا مقدار restart_or_not را چک می کند و اگر برابر 1 بود، کد زیر اجرا خواهد شد :


Intent intent = new Intent(this, Activity_3.class);
startActivity(intent);

اجرای کد بالا باعث می شود که دوباره Activity از نو اجرا شود (نام Activity را برابر Activity_3 در نظر گرفته ایم).

شاید این پرسش به وجود بیاید که چرا اصلا متغیر restart_or_not تعریف شد و قبل از اجرای دوباره Activity ، ابتدا چک می کنیم که مقدار آن برابر 1 باشد. متغیر restart_or_not را به این دلیل به کار برده ایم که ممکن است کاربر، دکمه Back گوشی را فشار دهد که از Activity خارج شود (destroy شود)، چون برای روش onDestroy کد نوشته ایم، بنابراین آن کدها اجرا خواهند شد، بنابراین باید حتما مقدار متغیر restart_or_not برابر 1 باشد تا دوباره وارد Activity شویم و تنها در صورتی برابر 1 خواهد بود که کاربر بر روی دکمه مربوط به restart شدن Activity اشاره کرده باشد (نه در حالت معمولی که کاربر، دکمه Back گوشی را فشار می دهد).

نکته

اگر نخواهیم نام Activity را در کدها ذکر کنیم، می توانیم با کد زیر، intent مربوط به آن را به دست بیاوریم (این کد در هر Activity که اجرا شود، intent مربوط به Activity را به ما می دهد) :


Intent intent = getIntent();
نویسنده علیرضا گلمکانی
شماره کلید 2979
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)