现有一个activity类public class MainActivity extends Activity {
//...其它代码省略
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) // System.currentTimeMillis()无论何时调用,肯定大于2000
{
Toast toast = Toast.makeText(getApplicationContext(),"再按一次退出",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
 
return super.onKeyDown(keyCode, event);
}

}
想把上面onKeyDown里面代码写到自己的工具类中, 其它都好办,就是最后一句super.onKeyDown(keyCode, event)不知如何写,恳请大侠帮忙解决?谢谢
public class MyTool {      Context context;
      Long exitTime;
      public MyTool(Context context){            this.context=context          }
public boolean exit(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) 
{
Toast toast = Toast.makeText(context.getApplicationContext(),"再按一次退出",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
exitTime = System.currentTimeMillis();
} else {
context.finish();
System.exit(0);
}
return true;
}
 
return super.onKeyDown(keyCode, event);//此处不知如何写
}

}

解决方案 »

  1.   

    super 也是一个对象,入参改成:
    public boolean exit(Activity superActivity, int keyCode, KeyEvent event) {
    // ...
    return superActivity.onKeyDown(keyCode, event);
    }
      

  2.   

    刚刚,发现有问题,如何将superActivity实例化:
    MyTool tool=new MyTool(this);
    Activity superActivity;
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    tool.exit(superActivity,keyCode,event)
    }
      

  3.   

    换个思路吧,看看我写的:
    private int pressed = 0;
    @Override
    public void onBackPressed() {
    if (pressed ++ == 0) {
    KDialogHelper.showToast(this, "再按一次退出系统");
    new Timer().schedule(new TimerTask() {
    @Override
    public void run() {
    pressed = 0;
    }
    }, 3000);
    }
    if (pressed > 1) {
    finish();
    }
    }