我已实施两次回退以退出活动。但是问题是我必须在每个活动中复制并粘贴相同的代码,以使其适用于每个活动。 我不能创建一个通用类并放置我的实现,因为活动已经扩展了AppCompatActivity,据我所知;不支持多重继承。 那我该怎么做
这是我的实现,欢迎提出建议。
boolean doubleBackToExitPressedOnce = false;
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce=false;
}
}, 2000);
}
答案 0 :(得分:3)
您可以创建自己的自定义Activity
,该自定义扩展AppCompatActivity
并放在其中,然后让您的其他每个活动扩展自定义Activity
而不是AppCompatActivity
。这不是多重继承
答案 1 :(得分:0)
创建您自己的自定义(BaseActivity扩展AppCompatActivity)并将OnBackPressed()实现放入BaseActivity,然后扩展BaseActivity的所有活动。
答案 2 :(得分:0)
不要听别人告诉您创建静态方法。而是,创建一个自定义Activity类,并使所有类扩展该类。在该类中,将您的自定义onBackPressed功能。
另一种选择是将单个活动与多个片段一起进行,而您只需要在一个地方实施反向压制即可。
答案 3 :(得分:-1)
首先覆盖后退点击监听器:
@Override
public void onBackPressed() {
super.onBackPressed();
}
删除super.onBackPressed();
添加此代码:
private static final int MIN_TIME_INTERVAL_BETWEEN_BACK_CLICKS = 2000; // # milliseconds, desired time passed between two back presses.
private long backPressedTime;
@Override
public void onBackPressed() {
if (backPressedTime + MIN_TIME_INTERVAL_BETWEEN_BACK_CLICKS > System.currentTimeMillis()) {
finishAffinity();
return;
}
else {
Toast.makeText(this, "Tap back button in order to exit", Toast.LENGTH_SHORT).show();
}
backPressedTime = System.currentTimeMillis();
}