PDA

View Full Version : جابجایی بین اکتیویتی های فعال



Ghadiri_S
جمعه 05 آبان 1391, 21:57 عصر
سلام دوستان

من یک اکتیویتی دارم به نام Test که تو اکتیویتی Main به کمک یک حلقه for سه تا ازش رو فراخوانی میکنم

حالا من چطور میتونم بین این اکتیویتی ها جابجا بشم بدون اینکه اکتیویتی که الان در حال نمایش هست رو ببندیم؟

دقیقا مثل Browser خود سیستم عامل اندروید. وقتی یک صفحه باز میکنیم میتونیم منو رو بزنیم و گزینه New Window را انتخاب کنبم. با این کار صفحه جدید Browser باز میشه اگر دوباره منو رو بزنیم و این بار Windows رو انتخاب کنیم میاد لیست Browser های باز شده رو نشون میده و میشه به راحتی به هرکدوم که بخوایم بریم.

دقیقا این کار رو میخوام انجام بدم. میشه دوستان و اساتید محترم راهنمایی بفرمایید.

با تشکر

shahin bahari
جمعه 05 آبان 1391, 22:35 عصر
tab host به کارتون نمیاد؟
به جز این میشه یه لیست هم از اکتیویتی هایی که مدنظرتون هست درست کنید و موقعی که لازم بود اون ها رو صدا کنید.

dr_jacky_2005
شنبه 06 آبان 1391, 11:48 صبح
اگه میخاین بروزر بنویسید ، از اتریبیوتِ BROWSABLE توی مانیفست استفاده کنید

Ghadiri_S
سه شنبه 23 آبان 1391, 19:21 عصر
نه دوست عزیز، من تو برنامه ای که روش کار میکنم 3 تا اکتیویتی دارم که کاملا مستقل از هم هستند. ممکن هست هر سه تاشون رو کاربر فعال کنه و شاید فقط 2 تاشون رو فعال کنه. که هر کدوم از این اکتیویتی ها مستقلا ممکن هست اکتیویتی های دیگه ای داشته باشند. و چون کاملا جدا از هم هستند نمیخوام از tab host استفاده کنم.

خوب من یک کاری کردم. اومدم یک اکتیویتی چهارم درست کردم که این اکتیویتی اسم اون سه تا اکتیوتی رو درقالب 3 تا دکمه نشون میده. بعد تو هر 3 اکتیویتی مورد نظر هم یک دکمه گذاشتم که هر وقت روش میزنم این اکتیویتی چهارم رو فعال میکنه .

حالا من به کمک چه دستوری میتونم اکتیویتی مورد نظرم رو که الان فعال هست رو بیارم روی همه اکتیویتی ها؟

Ghadiri_S
چهارشنبه 24 آبان 1391, 15:37 عصر
سلام دوستان.
راه حلش رو پیدا کردم. اکتیویتی هایی که تو اندروید اجرا میشوند دقیقا مثل یک پشته رو هم قرار میگیرند. و به کمک flag ها میتونیم اکتیویتی خاصی رو از پشته خارج کنیم و بالاترین قرار بدیم. فلگی که این کار رو میکنه Intent.FLAG_ACTIVITY_REORDER_TO_FRONT هست. کافیه تو هر اکتیویتی که قرار داریم یک Intent جدید رو با این فلگ فراخوانی کنیم. اینجوری کلاس مربوط به اکتیوتی مورد نظر از نو ساخته نمیشه بلکه REORDER میشه.

برای مثال کافیه تابع زیر رو تو برنامه خودمون داشته باشیم



private static Intent getIntent(Context context, Class<?> cls) {
Intent intent = new Intent(context, cls);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FR ONT);
return intent;
}


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



Intent intent = getIntent(getApplicationContext(), FrmList.class);
startActivity(intent);


به همین خوشمزگی ;)

Modernidea
دوشنبه 29 آبان 1391, 11:08 صبح
سلام دوستان.
راه حلش رو پیدا کردم. اکتیویتی هایی که تو اندروید اجرا میشوند دقیقا مثل یک پشته رو هم قرار میگیرند. و به کمک flag ها میتونیم اکتیویتی خاصی رو از پشته خارج کنیم و بالاترین قرار بدیم. فلگی که این کار رو میکنه Intent.FLAG_ACTIVITY_REORDER_TO_FRONT هست. کافیه تو هر اکتیویتی که قرار داریم یک Intent جدید رو با این فلگ فراخوانی کنیم. اینجوری کلاس مربوط به اکتیوتی مورد نظر از نو ساخته نمیشه بلکه REORDER میشه.

برای مثال کافیه تابع زیر رو تو برنامه خودمون داشته باشیم



private static Intent getIntent(Context context, Class<?> cls) {
Intent intent = new Intent(context, cls);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FR ONT);
return intent;
}


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



Intent intent = getIntent(getApplicationContext(), FrmList.class);
startActivity(intent);


به همین خوشمزگی ;)

سلام،
چرا پارامتر کلاس در تابع getIntent به شکل روبرو تعریف شده؟ Class<?>