在我的应用程序中,我想控制硬件back button
。这意味着在我的应用程序中有四到五个活动。现在假设我从一个活动转移到另一个活动。
现在,在我的情况下,当我按下硬件后退按钮时,我希望我的应用程序退出任何活动,但是在我的应用程序中按下此后退按钮时,它不会退出我的应用程序,直到它到达第一个活动...所以我的问题是我应该怎么做,当我按下硬件后退按钮它将退出我的应用程序...请建议我。
答案 0 :(得分:17)
试试这个:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_BACK)
{
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return true;
}
return false;
}
答案 1 :(得分:4)
您必须将所有5个活动的实例存储在公共类中,并在每个活动中添加onBackPressed()
,这将调用公共类中的方法,该方法将在每个活动上调用activity.finish()
五项活动。
例如:
class Activity1 extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyController.getInstance().setActivity1(this);
}
public void onBackPressed() {
MyController.getInstance().closeAllActivities();
super.onBackPressed();
}
}
同样,为Activity2,Activity3等编写。而且,MyController类看起来像这样:
class MyController {
private static MyController instance;
private Activity activity1, activity2, activity3, activity4, activity5;
private MyController() {}
public static synchronized MyController getInstance() {
if(instance == null) {
instance = new MyController;
}
return instance;
}
public void setActivity1(Activity activityObject) { activity1 = activityObject; }
public void setActivity2(Activity activityObject) { activity2 = activityObject; }
public void setActivity3(Activity activityObject) { activity3 = activityObject; }
public void setActivity4(Activity activityObject) { activity4 = activityObject; }
public void setActivity5(Activity activityObject) { activity5 = activityObject; }
public void closeAllActivities() {
if(activity1 != null) {
activity1.finish();
}
if(activity2 != null) {
activity2.finish();
}
if(activity3 != null) {
activity3.finish();
}
if(activity4 != null) {
activity4.finish();
}
if(activity5 != null) {
activity5.finish();
}
}
}