Активность не закрывается при нажатии кнопки «Назад»

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

  1. В этом действии у меня есть представление пешеходного перехода, которое показывает список элементов, которые можно выбрать, и при выборе запускает другое действие.
  2. В этом новом действии я открываю другое представление пешеходного перехода, которое запускает выбранный элемент из предыдущего действия.

Проблема, с которой я сталкиваюсь, заключается в том, что во втором действии, когда я нажимаю кнопку «Назад», он возвращается к черному экрану. Если я снова нажму кнопку «Назад», она закроет действие.

Что я могу сделать, чтобы закрыть действие, а не возвращаться к черному экрану? Это происходит не со всеми элементами, а только с некоторыми, и с этими немногими я думаю, что перенаправление страницы происходит на пешеходном переходе, поэтому, когда я нажимаю назад, он просто переходит на предыдущий экран.

Вот активность:

package com.gamesmart.gamesmart;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import org.xwalk.core.XWalkPreferences;
import org.xwalk.core.XWalkView;

public class Play extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_play);

        Intent intent = getIntent();
        String url = intent.getStringExtra("url");

        XWalkView xWalkWebView = (XWalkView)findViewById(R.id.xwalkWebViewPlay);

        // Turn on debugging if we are in DEBUG mode
        if (BuildConfig.DEBUG) {
            XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);
        }

        // Load the url
        xWalkWebView.load(url, null);
    }

    @Override
    public void onBackPressed(){
        finish();
    }
}

Я не думаю, что мой onBackPressed делает то, что должен...


person Get Off My Lawn    schedule 22.09.2016    source источник


Ответы (3)


Вы забыли

super.onBackPressed();

Просто используйте код ниже

@Override
public void onBackPressed() {
    super.onBackPressed();
}
person N J    schedule 22.09.2016
comment
Если я использую это, при нажатии назад он все равно переходит на черный экран, и мне приходится снова нажимать назад. - person Get Off My Lawn; 22.09.2016
comment
Итак, после запуска Play Activity из First Activity просто вызовите finish(), т.е. startActivity(...) ; finish() - person N J; 22.09.2016
comment
Я тоже так делаю, все равно не закрывается. Может ли пешеходный переход заменить кнопку «Назад» для навигации по истории браузера? - person Get Off My Lawn; 22.09.2016
comment
может хватать задний preseed - person N J; 22.09.2016
comment
похоже, мне пришлось добавить onKeyDown и поместить finish() туда, как это stackoverflow.com/a/2478869/1778465 - person Get Off My Lawn; 22.09.2016
comment
Да, вы должны - person N J; 22.09.2016

Попробуй это

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

    }
person John Joe    schedule 22.09.2016

Возможно, вам следует попытаться вызвать super method в onBackPressed(), или, если вы хотите вернуться к предыдущему действию, вывести на передний план другое действие в onBackPressed(), а затем закончить Activity следующим образом:

public void onBackPressed() {
    Intent main = new Intent(this, YourClass.class);
    main.putFlags(Intent.ACTIVITY_BROUGHT_TO_FRONT); // Or something like this, I dont really remember the flag name
    startActivity(main);
    super.onBackPressed();
}
person Mesabloo    schedule 22.09.2016