PDA

View Full Version : استفاده ارSaveInstance



آرام جان گل
سه شنبه 21 دی 1395, 22:05 عصر
سلام به دوستان
من می خوام یه اپ بنویسم که صفحه لاگین داره . به نظرم رسید که بعد از تاچ دکمه ورود layout عوض بشه به جای اینکه وارد یه activity دیگه بشه چون وقتی وارد activity دوم میشه و بک می زنه دوباره وارد اکتیویتی لاگین می شه . در حالی که به نظرم میرسه وقتی دکمه بک زده میشه باید از برنامه خارج بشه و برنامه به بک گراند انتقال پیدا کنه .

حالا با این تصور که من از اکتیویتی اول ، layout را عوض کنم و بعد بک را بزنم » حالا که اپ را از بک گراند انتخاب می کنم چون اکتبویتی همان اکتیویتی اول هست صفحه لاگین دوباره نمایش داده میشه (همون layout اول) در حالی که ما توی layout دوم بودیم (بعد از کلیک دکمه ورود)

جایی خوندم که اگر بخواهیم موقعیت صفحه قبل را حفظ کنیم باید از saveInstance استفاده کنیم اما نگاه کردم دیدم layout دوم هم توی onCreate از saveInstance استفاده کرده اینه که دیگه راه به جایی نبردم و از دوستان کمک می خوام

لطفا دوستان راهنمایی کنند ممنون

tux-world
سه شنبه 21 دی 1395, 23:52 عصر
سلام دوست عزیز.
چیزی که من متوجه شدم اینه که شما تو یه اکتیویتی دو تا لایت اوت دارید که اونها بو نمایش میدین یا مخفی میکنید؟ درست فهمیدم؟ اگه متغیری رو میخایید ذخیره کنید آسونه کاری نداره ولی من درست متوجه نشدم منظورتون چیه

msroid
چهارشنبه 22 دی 1395, 00:23 صبح
سلام

اینکه با زدن دکمه بک وارد اکتیویتی قبلی میشه کاملا عادیه چون مکانیسم stack روی اکتیویتی ها اجرا میشه. برای اینکه این اتفاق نیفته فقط کافیه وقتی وقتی اکتیویتی دوم رو صدا میزنید بعدش دستور finish رو صدا بزنید مثل زیر:


Intent i = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(i);
finish();


و یه کار دیگه هم که میتونید انجام بدید اینه که از دستور System.exit استفاده کنید. اگر برنامه شما نیازی نداره که در بکگراند اجرا بشه و وقتی کاربر از برنامه خارج میشه تا زمانی که دوباره واردش بشه هیچ عملیاتی در پس زمینه انجام نمیشه میتونید بگید وقتی کاربر روی دکمه بک کلیک کرد به صورت کامل برنامه بسته بشه حتی در بکگراند:


@Override
public void onBackPressed(){
System.exit(0);
}

tux-world
چهارشنبه 22 دی 1395, 10:48 صبح
... به صورت کامل برنامه بسته بشه حتی در بکگراند:


@Override
public void onBackPressed(){
System.exit(0);
}


این دستور رو خیلی از گوشی ها جواب نمیده. خودتون رو خسته نکنید

msroid
جمعه 24 دی 1395, 19:18 عصر
این دستور رو خیلی از گوشی ها جواب نمیده. خودتون رو خسته نکنید


دستور خاصی نیست که بخواد مشکل ایجاد کنه. و اتفاقا روی اکثر گوشی ها جواب میده چون از API LEVEL 1 توی اندروید وجود داشته!! تا الانم من باهاش به مشکل نخوردم تا الانم گزارش خطا در این مورد نداشتم.
البته میتونید از دستور
Runtime.getRuntime().exit(0)
هم استفاده کنید که البته پشت قضیه اون دستور اولی میاد همینو صدا میزنه.
و این دستور به صورت کامل با حالت force میاد و VM کنونی رو میبنده. یعنی از ریشه میره قطع میکنه و تقریبا روی تمامی گوشی ها اجرا میشه.

آرام جان گل
شنبه 02 بهمن 1395, 15:07 عصر
دوستان سلام
این اندروید چرا اینقدر بد قلقه
هر کار می کنی که همه چیز توی همه گوشی ها یکسان باشند مثلا اندازه فونت یا ریخت فونت یا فاصله بین کنترل ها ، نمی شه توی هر گوشی یه جور نشون می ده . بابا بازم به وب و مرورگرها . ما می گفتیم چرا یه مرورگر نمی سازن ما را راحت کنن چرا مرورگرا مرتب ورژن می دن همه چیز را خراب می کنن. حالا گیر کردیم به اندروید

راستی هیچ راهی نداره بشه یه کار مطمئن و تمیز انجام داد ؟ اینطوری که فاجعه است . دوستانی که حرفه ای اندروید کار می کنن چی کار می کنن
لطفا راهنمایی کنید