2012-03-26 45 views
0

我有两项活动。在第一次我来到了第二个活动从第一这样:无法离开我的应用程序

Intent i = new Intent(this, SecondClass.class); 
startActivity(i); 

但是在特殊情况要求我重新启动的第一项活动,因为我要回到它与同样的方式:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 

      //... 

      Intent i = new Intent(this, FirstClass.class); 
      startActivity(i); 

      super.onKeyDown(keyCode, event); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

因为我不能离开第一项活动: 如果我使用

@Override 
    public void onBackPressed() 
    { 
     finish(); 
     System.exit(0); 
     return; 
    } 

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 

     finish(); 
      System.exit(0); 

     return super.onKeyDown(keyCode, event); 
    } 
      return super.onKeyDown(keyCode, event); 
} 

它关闭我的应用程序,但打开第二个活动。 请帮忙!

回答

1

刚开始一个新的活动(并且只有在你开始一个新的活动之后)才调用finish(),让android完成剩下的工作。

Intent i = new Intent(this, SecondClass.class); 
startActivity(i); 
finish(); 

它将开始第二个活动并关闭第一个活动。如果你现在按返回键它会带你到最后开启的活动(不一定是一个从你的应用程序)

2

当你去你的第二个活动,则关闭第一个活动是这样

Intent i = new Intent(this, SecondClass.class); 
startActivity(i); 
finish(); // Close your first activity 

现在当你在你第二个活动,那么你可以通过这个

@Override 
public void onBackPressed() 
{ 
    Intent i = new Intent(this, FirstClass.class); 
    startActivity(i); 
    finish(); // Close your second activity 
} 

重新启动您的第一个活动是为:)

+0

哇,这很完美!谢谢! – Leo 2012-03-26 18:21:47

0

一样简单,我认为你不应该做T因为Android平台已经为您提供了一堆活动,改变了堆栈中活动的行为以及它们的实例,您可以使用AndroidManifest.xml来实现这一点。 Activity Launch Mode

相关问题