Подумайте, я использую пять экранных страниц для проекта "A". Каждая страница переключается между другими страницами последовательно один за другим, мне нужно закрыть все страницы, когда я нажимаю кнопку "exit" со страницы 5, которая последний.
Я использовал этот ниже код, но проблема только в том, что последняя страница приближается, другие нет.
найти мой код ниже
Button extbtn = (Button)findViewById(R.id.but_Exit);
extbtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
} });
Спасибо за ваше время!
Сделайте все пять действий расширением BaseActivity, которое регистрирует BroadcastReceiver
на onCreate (и отменяет регистрацию в onDestroy). Когда extbtn
, отправьте трансляцию всем этим BaseActivities, чтобы закрыть себя
например, в вашем BaseActivity добавьте:
public static final String ACTION_KILL_COMMAND = "ACTION_KILL_COMMAND";
public static final String ACTION_KILL_DATATYPE = "content://ACTION_KILL_DATATYPE";
private KillReceiver mKillReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
...
mKillReceiver = new KillReceiver();
registerReceiver(mKillReceiver, IntentFilter.create(ACTION_KILL_COMMAND, ACTION_KILL_DATATYPE));
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mKillReceiver);
}
private final class KillReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
}
и в extbtn onClick call:
extbtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// send a broadcast that will finish activities at the bottom of the stack
Intent killIntent = new Intent(BaseActivity.ACTION_KILL_COMMAND);
killIntent.setType(BaseActivity.ACTION_KILL_DATATYPE);
sendBroadcast(killIntent);
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
}
});