اجرای progressDialog در حین intent بین 2 Activity
سلام
من دوتا اکتیویتی دارم .فرض کنید اکتیویتی 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();
}
}
شما نمی تونید وقتی دیالوگ باز هست، Activity اول رو ببنید و به Activity دوم برید و دیالوگ هم همچنان باز بمونه.
لزومی هم نداره چه از نظر زیبایی و چه از نظر User Experience این اتفاق بیافته.
راه حل اول:
یا پردازش دوم رو هم در همون Activity اول انجام بدید و بعد به Activity دوم برید.
راه حل سوم:
دیالوگ باز شد توسط Activity اول رو ببنید، Activity دوم رو باز کنید و بعد یک Dialog جدید باز کنید.
راه حل سوم:
محتوای Activity اول رو با استفاده از Gone کردن لایه و VISIBLE کردن لایه دیگر طوری نشون بدید که انگار Activity عوض شده.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .