onBackPressed方法和onKeyDown无法正常工作

时间:2014-01-15 07:55:46

标签: android android-tabhost android-tabactivity

我正在使用此代码打开新活动

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后退键。  我在Job_Description.class上覆盖了OnBackPressed()方法,但它无效。

@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);
 }

请帮助我如何处理后退按钮 在此先感谢。

4 个答案:

答案 0 :(得分:3)

像这样使用:

@Override
 public void onBackPressed() {

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

答案 1 :(得分:0)

只需写下:

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

它会起作用..

答案 2 :(得分:0)

首先,您应该在开始下一个活动后完成当前活动。订单应该是这些电话的另一种方式。

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

此外,由于您正在处理后退按钮,因此请勿致电super.onBackPressed();。因为它的作用是完成当前的活动,但你已经在做了。

答案 3 :(得分:0)

尝试以下简单代码。将webView更改为您的WebView变量

@Override
public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
}