View Full Version : استفاده از کلید بک در اکشن بار !؟
ghasem110deh
پنج شنبه 04 خرداد 1396, 18:53 عصر
سلام به همه :-)
دوستان من از کلید بک اکشن بار استفاده کردم ، واسه برگشت به اکتیویتی پدر ؛ اما وقتی اکتیویتی پدر (اصلی) باز میشه دیگه اطلاعاتی که از اکتیویتی قبل (لاگین) گرفته بودم دیگه نمایش داده نمیشه !
اطلاعات رو بصورت اینتنت از اکتیویتی قبل گرفتم :
// get param from login activityprivate void getBundle() {
Bundle extras = getIntent().getExtras();
USER_ID = extras.getInt("EXTRA_ID");
USER_NAME = extras.getString("EXTRA_NAME");
USER_AGE = extras.getInt("EXTRA_AGE");
USER_GENDER = extras.getString("EXTRA_GENDER");
USER_DESC = extras.getString("EXTRA_DESC");
img_bitmap = BitmapFactory.decodeByteArray(getIntent().getByteA rrayExtra("EXTRA_PIC"), 0, getIntent().getByteArrayExtra("EXTRA_PIC").length);
}
از onRestart و ... هم استفاده کردم ولی باز اطلاعات نمایش داده نمیشه !
اما اگه با کلید بک گوشی برگردیم مشکلی بوجود نمیاد !!
بهزاد اندیشمند
جمعه 05 خرداد 1396, 01:00 صبح
سلام به همه :-)
دوستان من از کلید بک اکشن بار استفاده کردم ، واسه برگشت به اکتیویتی پدر ؛ اما وقتی اکتیویتی پدر (اصلی) باز میشه دیگه اطلاعاتی که از اکتیویتی قبل (لاگین) گرفته بودم دیگه نمایش داده نمیشه !
اطلاعات رو بصورت اینتنت از اکتیویتی قبل گرفتم :
// get param from login activityprivate void getBundle() {
Bundle extras = getIntent().getExtras();
USER_ID = extras.getInt("EXTRA_ID");
USER_NAME = extras.getString("EXTRA_NAME");
USER_AGE = extras.getInt("EXTRA_AGE");
USER_GENDER = extras.getString("EXTRA_GENDER");
USER_DESC = extras.getString("EXTRA_DESC");
img_bitmap = BitmapFactory.decodeByteArray(getIntent().getByteA rrayExtra("EXTRA_PIC"), 0, getIntent().getByteArrayExtra("EXTRA_PIC").length);
}
از onRestart و ... هم استفاده کردم ولی باز اطلاعات نمایش داده نمیشه !
اما اگه با کلید بک گوشی برگردیم مشکلی بوجود نمیاد !!
برای برگشت به اکتیویتی اول از فلگ ACTIVITY_CLEAR_TOP استفاده کنید.
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case android.R.id.home:
Intent home = new Intent(this, Home.class);
home.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(home);
}
return (super.onOptionsItemSelected(menuItem));
ghasem110deh
جمعه 05 خرداد 1396, 22:17 عصر
برای برگشت به اکتیویتی اول از فلگ ACTIVITY_CLEAR_TOP استفاده کنید.
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case android.R.id.home:
Intent home = new Intent(this, Home.class);
home.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(home);
}
return (super.onOptionsItemSelected(menuItem));
تشکر بابت راهنمایی ولی فکر کنم دقیقا منظورم رو نرسوندم !
ببینید ، من اطلاعات کاربر رو از اکتیویتی لاگین میفرستم به اکتیویتی اصلی، بعد از اکتیویتی اصلی یه اکتیویتی دیگه رو باز میکنم (که فرزند اکتیویتی اصلی هست و با دکمه بک توی اکشن بار برمیگرده به اکتیویتی اصلی) تا اینجا مشکلی نیست ! اما وقتی از اکتیویتی فرزند بر میگردم به اکتیویتی اصلی (که اکتیویتی پدر هست) دیگه اطلاعاتی که از لاگین گرفته بودم نمایش داده نمیشه (در واقع مقدار متغیرهاشون نال میشه)
متود لود اطلاعات رو توی onRestart ، onResume ، onStart و ... هم گذاشتم ولی باز مشکل حل نشد !
حالا اگه با دکمه بک خود گوشی یا ایمولیتور برگردم به اکتیویت اصلی اطلاعات سرجاش هست :ناراحت:
CsharpNevisi
شنبه 06 خرداد 1396, 10:18 صبح
یه راه خیلی ساده داره ..
یک کلاس استاتیک درست کن و این متغییرها رو استاتیک بگیر .. USER_ID , USER_NAME , USER_AGE , USER_GENDER , USER_DESC .. تو فرم لاگین این متغییر ها رو مقداردهی کن و دیگه داده هارو با اکسترا و باندل پاس نده ... از کلاسی که استاتیکه و تو لاگین مقدار بهشون دادی داده بخون .. .
دقیقا نمیدونم کلید بک اکشن بار چجوری کار میکنه ... چون همیشه اکشن بار دستی خودمو میسازم .. ولی احتمالا یه چیزی باعث میشه اکتیویتی پدرت از حافظا خارج بشه .. داخل متد OnCreate اکتیویتی پدرت یه بریک پوینت بزار یا یه لاگی بنویس .. بعد برو به اکتیوتی فرزند و دوباره برگرد به اکتیوتی پدر .. اگه متد OnCreate اجرا بشه مشخص میشه که از حافظه خارج شده بوده و شما دیگه نمیتونی با باندل کار کنی ..
راهی که پیشنهاد کردم هم منطقیه هم کارتو خیلی ساده تر راه میندازه .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.