2016-09-22 2 views
1

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

  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 делает то, что должно быть ...

ответ

3

Вы забыли

super.onBackPressed(); 

Просто использование ниже кода

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
} 
+0

Если я использую это, при нажатии назад он все еще идет к черному экрану, и я должен нажать снова. –

+0

Итак, после запуска 'Play' Activity from First Activity, просто позвоните' finish() 'i.e' startActivity (...); finish() ' –

+0

Я тоже это делаю, и он все равно не закрывается. Может ли пешеходная дорожка взять на себя кнопку «Назад» для навигации по истории браузера? –

0

Может быть, вы должны попытаться вызвать 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(); 
} 
1

Попробуйте

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

    }