سلام من برنامه ام دوتا اکتیویتی داره activity1 و activity2 بعد میخوام کاربر وقتی داخل activity2 هست بتونه از برنامه خارج بشه من با finish(); و system.extite(); این کار و میکنم ولی کامل خارج نمیشه به activity1 میره
کسی میتونه کمک کنه؟
سلام من برنامه ام دوتا اکتیویتی داره activity1 و activity2 بعد میخوام کاربر وقتی داخل activity2 هست بتونه از برنامه خارج بشه من با finish(); و system.extite(); این کار و میکنم ولی کامل خارج نمیشه به activity1 میره
کسی میتونه کمک کنه؟
سلام
خب می تونی تو اکتیویتی اولت بعد startactivity تابع finish رو صدا بزنی اینجوری تو اکتیویتی دومت هر جا finish رو صدا زدی برنامت بسته میشه
فقط از دستور system.exit استفاده کنی چی میشه؟
من تا حالا از این دستور استفاده نکردم و تو هیچکدوم از سایت ها هم ندیدم استفاده کنن شاید جواب بده دستور اصلی برای بستن یک اکتیویتی تابع finish هستش که تو داکیومنت های گوگل هم وجود هست.
این دستور system.exit مخصوص خود جاواست و جزو Api های اندروید فکر نکنم باشه
چرا هست. و اینکه مخصوص و اینا رو نداریم به هر حال اندروید در بستر جاوا داره فعالیت میکنه و فقط یه فریم ورک مبتنی بر اون هستش. مسلما این دستورات روی خود جاوا تاثیر گذاره که اندروید روش سوار شده.
اگه میخواد از اکتیویتی دو مستقیم خارج بشه باید تو مانیفستش برای اکتیویتی یک حالت history رو false کنه
میتونید هرجا که خواستید کل اکتیویتی های قبلی بسته شه این کد رو بگذارید
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();
}
من باStstem.exit(0)مشکل دارم. بعد از این که دستور اجرا میشه کل اکتیویتی ها بسته می شه ولی دوباره اکتیویتی که از توش دستور فراخوانی شده اجرا میشه.
2. اون عدد صحیحی که داخل پارامتر exit می ذاریم چیه؟ چون دیدم به جای 0و 1 و 2 هم میذارن
Intent intent9 = new Intent(Intent.ACTION_MAIN); intent9.addCategory(Intent.CATEGORY_HOME);
intent9.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent9);
این توسط خودم همین الان تست شد و کار میکنه :)
اکتیویتی اول من یه 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
تو اکتیویتی اول (splash screen) بعد از oncreate کد زیر رو قرار بده:
@Override
public void onStop() {
super.onStop();
finish();
}
با این کد اکتیویتی اول بعد از رفتن به اکتیویتی دوم، از بین میره و زمانی که از اکتیویتی دوم خارج بشی از برنامه خارج میشه چون اکتیویتی اول از بین رفته
برای بستن تمامی اکتیویتی با کلیک بر روی یک دکمه بهترین کار همین هست.اگه هیستوری رو پاک کنید نمیشه با بک کردن برگشت در صورتی که این کد فقط موقعی اجرا میشه که شما بخواهید کل اکتیویتی ها رو ببندید.غیرفعال کردن هیستوری چه بخواید چه نخواید اکتیویتی قبلی پاک شده.
لازم نیست توی هر اکتیویتی شرط رو چک کنیم.فقط توی اکتیویتی اول این کد رو میذاریم (حالا یا اسپلش یا ...!)