0

کار با Activity ها ، در برنامه نویسی اندروید

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

روشی دیگر برای بستن (destroy کردن) و اجرای دوباره یک Activity (در اصطلاح، restart یا refresh کردن Ac
یک شنبه 18 مرداد 1394  9:00 AM

برای restart کردن یک Activity ، ابتدا در میان کدهای آن Activity ، روش onActivityResult را به صورت زیر کدنویسی می کنیم (Override می کنیم) :


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data);    

    if (requestCode == 1){
        finish();
    }
}

یعنی به عنوان مثال، موقعیت آن در Activity باید مشابه کد زیر باشد :


package com.kelidestan.com;

import java.util.Random;

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

public class MainActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);        
                setContentView(R.layout.activity_main);
               
                // some code
        }
       
       
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
            super.onActivityResult(requestCode, resultCode, data);    

            if (requestCode == 1){
                finish();
            }
        }

}

سپس هر زمان که بخواهیم Activity را restart کنیم، باید یک سری کد اجرا شود، اما چگونگی کدها به این بستگی دارد که در چه محلی قصد داریم آنها را اجرا کنیم. برای محل کدها، دو حالت را در نظر می گیریم :

1- کدها در میان کدهای همان Activity که می خواهیم restart شود (مثلا با اشاره بر روی یک دکمه در خود Activity ، باعث restart شدن آن شویم).

2- کدها در میان کدهای کلاسی (Class) غیر از Activity مورد نظر که می خواهیم restart شود. این کلاس (Class) می تواند یک Activity دیگر، یک کلاس (Class) که خودمان تعریف کرده ایم، یک سرویس (Service) یا ... باشد.

1- کدها در میان کدهای همان Activity که می خواهیم restart شود :

در این حالت، کدهای زیر را در Activity اجرا می کنیم (برای restart شدن) :

 

Intent intent = new Intent(this, MyActivity.class);
//intent.putExtra("someData", "Here is some data");
startActivityForResult(intent, 1);

در کد بالا، نام Activity را برابر MyActivity در نظر گرفته ایم.

2- کدها در میان کدهای کلاسی (Class) غیر از Activity مورد نظر که می خواهیم restart شود :

در این حالت، کدهای زیر را در کلاس (Class) مورد نظر اجرا می کنیم (برای restart شدن) :


//intent.putExtra("someData", "Here is some data");
((Activity) myContext).startActivityForResult(myIntent, 1);

دقت شود که ابتدا Context و Intent مربوط به Activity (همان Activity که می خواهیم restart شود) را به آن کلاس ارسال کرده و سپس روش startActivityForResult را به شکل بالا اجرا می کنیم. در کد بالا، myContext و myIntent ، همان Context و Intent مربوط به Activity هستند که آن دو را به کلاس ارسال کرده ایم. در این حالت، فرض کرده ایم که Activity قبلا اجرا شده (یعنی یا اکنون آن را می بینیم یا در پس زمینه است).

تشکرات از این پست
دسترسی سریع به انجمن ها