Подтвердить что ты не робот

Android закрыть приложение на кнопку назад

Приложение выглядит примерно так: MainActivity → UserActivity → DetailsActivity. (приблизительный порядок действий).

Я хотел бы закрыть приложение, когда нажата кнопка "Назад" в разделе "Подробности" (третье действие в строке).

Хотелось узнать, хорошо ли это сделать, и что было бы лучшим способом сделать это?

4b9b3361

Ответ 1

Если я правильно вас понимаю, вы хотите закрыть активность, даже если стек не пуст, что означает, что в стеке более 1 активности?

Хорошо, если есть только один... просто:

finish();

В противном случае трюк:

Intent intent = new Intent(Main.this, Main.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);

И в том же действии в onCreate:

if (getIntent().getBooleanExtra("EXIT", false)) {
    finish();
}

Итак, вы очищаете стек, а затем убиваете единственное, что осталось... вы можете сделать это в любой деятельности и, конечно же, использовать его в onBackPressed:)

Ответ 2

Это можно сделать, переопределив событие кнопки "Назад" не добавлять историю для конкретной активности в конкретном состоянии.

@Override
public void onBackPressed()
{
    if ( ! getIntent().getExtras().getBoolean(FROM_SETTINGS_KEY))
        moveTaskToBack(true); // exist app
    else
        finish();
}

в моем примере он проверяет флаг, откуда я начал свою деятельность, если он запускается из настроек, тогда действуйте нормально, иначе сделайте его сверху и выйдите из приложения назад, нажав

Ответ 3

Попробуйте это, добавьте noHistory в ваш файл манифеста каждый вид деятельности.

android:noHistory="true"

Ответ 4

попробуйте это.

 quitBtn.setOnClickListener(new View.OnClickListener() {         
    @Override
    public void onClick(View paramView) 
  {
        finish();          
        moveTaskToBack(true);
    }
});

Ответ 5

При запуске UserActivity из MainActivity поместите finish() после startActivity(). сделать то же самое в UserActivity, когда вы запустите DetailsActivity

Ответ 6

Внутри текущей деятельности:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        Intent intent = new Intent(CurrentActivity.this, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra("EXIT", true);
        startActivity(intent);
    }
    return super.onKeyDown(keyCode, event);
}

Внутри MainActivity OnCreate:

if (getIntent().getBooleanExtra("EXIT", false)) {
    finish();
    return;
}

Ответ 7

1) Создайте файл с именем Constants.java в проекте

2) Добавьте этот код в этот файл

    public static void killAll() {

    for (Activity act : Constants.activity_stack) {
        act.finish();
    }
    Constants.activity_stack.clear();

}

3) Теперь, когда вы находитесь в главной операции в onCreate(), добавьте нижеприведенный фрагмент

        // add to stack
    Constants.activity_stack.add(this);

4) Аналогично добавьте активность пользователя в стек

5) В детали поставки в onBackPressed() используйте нижеприведенный фрагмент

Constants.killAll();//will kill all the activities and bring you out of the application.

Ответ 8

Вот полный класс, который показывает, как вызывается другая активность при нажатии кнопки в первом действии.

public class FirstActivity extends Activity implements View.OnClickListener {

    Button goToSecondActivityButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.first_activity);

        ((TextView) findViewById(R.id.textRecommendationMessage)).setText("This is the first activity");

        goToSecondActivityButton= (Button) findViewById(R.id.button_go_to_second_activity);
        goToSecondActivityButton.setOnClickListener(this);
    }

     @Override
     public void onClick(View view) {

         goToSecondActivity();
    }

    private void goToSecondActivity() {

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

Ответ 9

Это работает для меня:

public void onBackPressed(){
Intent a = new Intent(Intent.ACTION_MAIN);
a.addCategory(Intent.CATEGORY_HOME);
a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(a);
}

Ответ 10

Если вы вызываете функцию UserActivity из MainActivity, завершите вызов() после startActivity(). Ниже приведен код:

Intent userActivity = new Intent(MainActivity.this, UserActivity.class);
       userActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
       MainActivity.this.startActivity(userActivity );
       finish();

Ответ 11

на вашей деятельности

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return super.onOptionsItemSelected(item);
}

public void onBackPressed(){
    Intent a = new Intent(Qeydiyyat.this,Login.class);
    a.addCategory(Intent.CATEGORY_HOME);
    a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(a);