按下后退按钮时,活动不会关闭

时间:2016-09-22 16:21:43

标签: java android crosswalk

我有一个使用人行横道的应用程序。我在两个活动中使用它。

  1. 在此活动中,我有一个人行横道视图,显示可选项目列表,并在选中时启动另一个活动。
  2. 在这个新活动中,我打开另一个人行横道视图,该视图运行上一个活动中的所选项目。
  3. 我遇到的问题是,在第二个活动中,当我按下后退按钮时,它会回到黑屏。如果我再次按下后退按钮,则会关闭活动。

    如何关闭活动而不是返回黑屏?这不会发生在所有项目上,只有少数几个,我认为在人行横道上发生页面重定向,所以当我按回它时,它就会转到上一个屏幕。

    以下是活动:

    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 个答案:

答案 0 :(得分:3)

你忘记了

super.onBackPressed();

只需使用以下代码

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

答案 1 :(得分: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);

    }

答案 2 :(得分: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();
}