Метод onBackPressed и onKeyDown не работают должным образом

Я использую этот код, чтобы открыть новую активность

View view = getLocalActivityManager().startActivity("recently_viewd", 
                        new Intent(context,Job_Description.class)
                  .putExtra("line", result)
                    .putExtra("limit",0)
                    .putExtra("Alert", false)
                    .putExtra("str_Descrption",edit_Jobdesc.getText().toString().trim())
                    .putExtra("str_location", edit_JobLoc.getText().toString().trim()).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
                        .getDecorView();

                setContentView(view);

И в Job_Description.class я хочу обрабатывать ключ возврата Android. Я переопределяю метод OnBackPressed() для Job_Description.class, но он не работает.

@Override
 public void onBackPressed() {
     super.onBackPressed();
     Toast.makeText(this, "BAck Click", Toast.LENGTH_LONG).show();
     finish();
        startActivity(new Intent(context, Tab_Bar.class));
 return;
 }

после этого я реализую метод OnKeyDown(), но он тоже не работает.

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event)  {
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
               Toast.makeText(this, "BAck Click", Toast.LENGTH_LONG).show();
         finish();
            startActivity(new Intent(context, Tab_Bar.class));
         return true;
     }

     return super.onKeyDown(keyCode, event);
 }

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


person deep    schedule 15.01.2014    source источник


Ответы (4)


Используйте так:

@Override
 public void onBackPressed() {

     Toast.makeText(this, "BAck Click", Toast.LENGTH_LONG).show();
     finish();
        startActivity(new Intent(context, Tab_Bar.class));
super.onBackPressed();
 return;
 }
person Ravind Maurya    schedule 15.01.2014

Просто пиши:

@Override
 public void onBackPressed() {
 super.onBackPressed();
 finish();
 Toast.makeText(this, "BAck Click", Toast.LENGTH_LONG).show();
 startActivity(new Intent(context, Tab_Bar.class));
}

Это сработает..

person Ranjit    schedule 15.01.2014

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

startActivity(new Intent(context, Tab_Bar.class));    
finish();

А также, поскольку вы обрабатываете кнопку «Назад», вообще не вызывайте super.onBackPressed();. Потому что он завершает текущую деятельность, но вы уже делаете это.

person ayorhan    schedule 15.01.2014

Попробуйте этот простой код. Измените webView на свой WebView var

@Override
public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
}
person Fathah Crg    schedule 01.09.2019