View Full Version : خروج کامل از برنامه
zahra.mf
دوشنبه 08 تیر 1394, 00:11 صبح
سلام من برنامه ام دوتا اکتیویتی داره activity1 و activity2 بعد میخوام کاربر وقتی داخل activity2 هست بتونه از برنامه خارج بشه من با finish(); و system.extite(); این کار و میکنم ولی کامل خارج نمیشه به activity1 میره
کسی میتونه کمک کنه؟
sobhmoud
دوشنبه 08 تیر 1394, 00:24 صبح
سلام
خب می تونی تو اکتیویتی اولت بعد startactivity تابع finish رو صدا بزنی اینجوری تو اکتیویتی دومت هر جا finish رو صدا زدی برنامت بسته میشه
pbm_soy
دوشنبه 08 تیر 1394, 00:35 صبح
فقط از دستور system.exit استفاده کنی چی میشه؟
sobhmoud
دوشنبه 08 تیر 1394, 01:54 صبح
من تا حالا از این دستور استفاده نکردم و تو هیچکدوم از سایت ها هم ندیدم استفاده کنن شاید جواب بده دستور اصلی برای بستن یک اکتیویتی تابع finish هستش که تو داکیومنت های گوگل هم وجود هست.
این دستور system.exit مخصوص خود جاواست و جزو Api های اندروید فکر نکنم باشه
tux-world
دوشنبه 08 تیر 1394, 08:48 صبح
من تا حالا از این دستور استفاده نکردم و تو هیچکدوم از سایت ها هم ندیدم استفاده کنن شاید جواب بده دستور اصلی برای بستن یک اکتیویتی تابع finish هستش که تو داکیومنت های گوگل هم وجود هست.
این دستور system.exit مخصوص خود جاواست و جزو Api های اندروید فکر نکنم باشه
چرا هست. و اینکه مخصوص و اینا رو نداریم به هر حال اندروید در بستر جاوا داره فعالیت میکنه و فقط یه فریم ورک مبتنی بر اون هستش. مسلما این دستورات روی خود جاوا تاثیر گذاره که اندروید روش سوار شده.
اگه میخواد از اکتیویتی دو مستقیم خارج بشه باید تو مانیفستش برای اکتیویتی یک حالت history رو false کنه
amin_nez
دوشنبه 08 تیر 1394, 10:34 صبح
میتونید هرجا که خواستید کل اکتیویتی های قبلی بسته شه این کد رو بگذارید
Intent intent = new Intent(getApplicationContext(), FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
و توی اکتیویتی اول هم این شرط رو اول از همه چیز چک کنید.
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
tux-world
دوشنبه 08 تیر 1394, 11:15 صبح
میتونید هرجا که خواستید کل اکتیویتی های قبلی بسته شه این کد رو بگذارید
Intent intent = new Intent(getApplicationContext(), FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
و توی اکتیویتی اول هم این شرط رو اول از همه چیز چک کنید.
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
فکر نمیکنید این کد دردسر داره؟ و دائما باید این خطهای اضافی رو بالای هر کلاس بزاره؟ غیرفعال کردن هیستوری تو مانیفست عاقلانه تر از این کد هستش.
Pam.goudarzi
دوشنبه 08 تیر 1394, 12:37 عصر
من با Ststem.exit(0) مشکل دارم. بعد از این که دستور اجرا میشه کل اکتیویتی ها بسته می شه ولی دوباره اکتیویتی که از توش دستور فراخوانی شده اجرا میشه.
2. اون عدد صحیحی که داخل پارامتر exit می ذاریم چیه؟ چون دیدم به جای 0و 1 و 2 هم میذارن
Pam.goudarzi
دوشنبه 08 تیر 1394, 13:06 عصر
Intent intent9 = new Intent(Intent.ACTION_MAIN); intent9.addCategory(Intent.CATEGORY_HOME);
intent9.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent9);
این توسط خودم همین الان تست شد و کار میکنه :)
zahra.mf
دوشنبه 08 تیر 1394, 15:14 عصر
چرا هست. و اینکه مخصوص و اینا رو نداریم به هر حال اندروید در بستر جاوا داره فعالیت میکنه و فقط یه فریم ورک مبتنی بر اون هستش. مسلما این دستورات روی خود جاوا تاثیر گذاره که اندروید روش سوار شده.
اگه میخواد از اکتیویتی دو مستقیم خارج بشه باید تو مانیفستش برای اکتیویتی یک حالت history رو false کنه
میشه بگید چجوری تو مانیفست غیر فعالش کنم؟
zahra.mf
دوشنبه 08 تیر 1394, 15:14 عصر
Intent intent9 = new Intent(Intent.ACTION_MAIN); intent9.addCategory(Intent.CATEGORY_HOME);
intent9.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent9);
این توسط خودم همین الان تست شد و کار میکنه :)
کجا این و نوشتید؟
zahra.mf
دوشنبه 08 تیر 1394, 15:20 عصر
اکتیویتی اول من یه splash هست که یه صدا تو بک گراندش اجرا میشه و تو اون صفحه اگه کاربر روی textview که قرار دارم کلیک که وارد اکتیویتی دوم میشه و میتونه یه مدت صبر کنه تا اون اهنگ تمام بشه و خودبخود به اکتیویتی دوم میره
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.labbaik);
mp.start();
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(A_hajActivity.this , menu.class));
mp.stop();
}
});
Handler handler = new Handler();
handler.postDelayed(new Runnable(){
public void run(){
finish();
startActivity(new Intent (A_hajActivity.this,menu.class));
}
}, 17000);
}
الان من میخوام تو اکتیویتی دوم یه button قرار بدم که در هر صورت وارد اکتیویتی دوم بشه خارج بشه با دکمه exite
armin8651
دوشنبه 08 تیر 1394, 15:41 عصر
تو اکتیویتی اول (splash screen) بعد از oncreate کد زیر رو قرار بده:
@Override
public void onStop() {
super.onStop();
finish();
}
با این کد اکتیویتی اول بعد از رفتن به اکتیویتی دوم، از بین میره و زمانی که از اکتیویتی دوم خارج بشی از برنامه خارج میشه چون اکتیویتی اول از بین رفته
amin_nez
دوشنبه 08 تیر 1394, 17:43 عصر
فکر نمیکنید این کد دردسر داره؟ و دائما باید این خطهای اضافی رو بالای هر کلاس بزاره؟ غیرفعال کردن هیستوری تو مانیفست عاقلانه تر از این کد هستش.
برای بستن تمامی اکتیویتی با کلیک بر روی یک دکمه بهترین کار همین هست.اگه هیستوری رو پاک کنید نمیشه با بک کردن برگشت در صورتی که این کد فقط موقعی اجرا میشه که شما بخواهید کل اکتیویتی ها رو ببندید.غیرفعال کردن هیستوری چه بخواید چه نخواید اکتیویتی قبلی پاک شده.
لازم نیست توی هر اکتیویتی شرط رو چک کنیم.فقط توی اکتیویتی اول این کد رو میذاریم (حالا یا اسپلش یا ...!)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.