آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

اجرای progressDialog در حین intent بین 2 Activity

sadeghbarout  12 سال پیش  12 سال پیش
0 0

سلام

من دوتا اکتیویتی دارم .فرض کنید اکتیویتی 1  من یه دکمه داره که وقتی زده میشه یه عملیات سنگین انجام میشه و به اکتیویتی 2 من میره و اونجا بقیه عملیات سنگین رو انجام میده.

حالا من میخوام وقتی کاربر دکمه رو میزنه یه progressDialog نشون بده و در پس زمینه اون عملیات های سنگین توی اکتیویتی اول انجام بشه و بره اکتیویتی دوم و اونجا هم عملیات ها رو انجام بده و در آخر progressDialog رو ببنده.

من خودم اینو با thread ها نوشتم ولی وقتی به اکتیویتی دوم میره اون progressDialog هم بسته میشه. اما من میخوام اون progressDialog باز بمونه و در انتهای عملیات های صفحه دوم بسته بشه

شما راهی سراغ ندارید؟

برای راحتی کار یه کد نمونه ای هم میذارم :

اکتیویتی اول :

 public class Test_thread_progressDialogActivity extends Activity {

    public static ProgressDialog dialog1;
    public static Handler        handler;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        handler = new Handler();

        Button btn = (Button) findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Thread thread = new Thread(new Runnable() {

                    @Override
                    public void run() {
                        handler.post(new Runnable() {

                            @Override
                            public void run() {
                                dialog1 = new ProgressDialog(Test_thread_progressDialogActivity.this);

                                dialog1.setTitle("PROGRESSING1");
                                dialog1.setMessage("Pleas wait until finished!");
                                dialog1.setCancelable(false); 
                                dialog1.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                                dialog1.setCancelable(false);

                                dialog1.show();

                            }
                        });
                    }
                });
                thread.start();

                Thread thread2 = new Thread(new Runnable() {

                    @Override
                    public void run() {

                        for (int i = 0; i < 10000; i++) {
                            Log.i("Dd", "ds" + i);
                        }
                        Intent intent = new Intent(Test_thread_progressDialogActivity.this, Test_thread_progressDialogActivity2.class);
                        Test_thread_progressDialogActivity.this.startActivity(intent);
                    }
                });
                thread2.start();        

            }
        });

    }
}

اینم اکتیویتی دوم:

 public class Test_thread_progressDialogActivity2 extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.form2);
        handler = new Handler();

        Thread thread2 = new Thread(new Runnable() {

            @Override
            public void run() {

                for (int i = 0; i < 10000; i++) {
                    Log.i("Dd", "ds" + i);
                }
            }
        });
        thread2.start();
       
    }
}

0 0
یه متغییر تعریف کن ، is thread working - تا زمانی که ترد کار میکنه مقدارش درست باشه ، چون استاتیک تعریف میکنیم ، میگیم ActivityMain.isthreadworking پس از هر جایی میشه بهش دسترسی داشت ، از طرفی تا زمانی که شرط برقراره ، دیالوگ رو نشون بده :) (12 سال پیش)
0 0
اینو که خودمم میدونم که کی باید بسته بشه. مشکل من اینه که وقتی اکتیویتی بعدی اجرا میشه ، progressDialog خود به خود بسته میشه! من میخوام خودبخود بسته نشه یا یه جوری ظاهرش کنیم که مستقل از اکتیویتی باشه! (12 سال پیش)
0 0
من یه راهی به ذهنم می رسه ولی حال ندارم توضیح بدم خیلی طولانیه فردا تو راهه دانشگاه یادم بنداز برات توضیح بدم. (12 سال پیش)
0 0
اوکی ;) (12 سال پیش)
0 0
دوستان من همچنان جوابی نگرفته ام و منتظر یه راه حلم! ممنون (12 سال پیش)
0 0
فردا تو راه دانشگاه یادم بنداز بگم ! ، از همون اول دیالوگ رو نشون بده (کاستوم دیالوگ ) اگه ترد متوقف شد ، دیالوگ رو مخفی کن یا برو به یه اکتیویتی دیگه ! (12 سال پیش)
0 0
مجتبی جان انگار هنوز نگرفتی سوالم چیه! بیخیال ;) (12 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
uncocoder  12 سال پیش
+3 0

شما نمی تونید وقتی دیالوگ باز هست، Activity اول رو ببنید و به Activity دوم برید و دیالوگ هم همچنان باز بمونه.

لزومی هم نداره چه از نظر زیبایی و چه از نظر User Experience این اتفاق بیافته.

 

راه حل اول:

یا پردازش دوم رو هم در همون Activity اول انجام بدید و بعد به Activity دوم برید.

 

راه حل سوم:

دیالوگ باز شد توسط Activity اول رو ببنید، Activity دوم رو باز کنید و بعد یک Dialog جدید باز کنید.

 

راه حل سوم:

محتوای Activity اول رو با استفاده از Gone کردن لایه و VISIBLE کردن لایه دیگر طوری نشون بدید که انگار Activity عوض شده.

0 0
ممنون استاد . بالاجبار از همون راه اول استفاده کردم :) (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .