2012-10-02 162 views
1

可能重复:
android pressing back button should exit the appAndroid - 按下后退按钮时如何退出活动?

我建立一个注册和登录屏幕只是一个练习。因此,我将SharedPreferences放在了用户再次打开该应用程序时,它将引导它们登录活动,而不是从寄存器重新开始。但是,当我从登录活动中按回按钮时,它仍然使我回到注册可能会改变已保存的SharedPreferences的活动。我想禁用此功能,当用户按下后退按钮时如何退出应用程序?

谢谢,

回答

9

如果从未想后退按钮返回到登录画面,最干净的解决办法是在清单中使用noHistory属性从活动历史中排除,即

<activity 
     android:name=".RegistrationActivity" 
      ... 
     android:noHistory="true" > 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
+0

+1。这听起来不错。 –

+0

完美地工作,因为你提到,谢谢! –

1
@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 
} 

此方法渔获时的返回按钮被按下。

+0

这拦截后退按钮单击,但它如何防止用户返回到以前的活动? – Sam

+0

使用这个,它可以帮助你去前面的活动,mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); \t \t \t \t startActivity(mainIntent); \t \t \t \t finish(); –

0
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() ==KeyEvent.ACTION_DOWN) 
    { 
     //Handler for KEYCODE_BACK Pressing. 
    } 
} 

如果你想关闭该活动:当你的活动完成,应关闭

public void finish() 

.CALL这。 ActivityResult会传播给通过onActivityResult()启动的任何人。

如果你想关闭另一个活动通过startActivityForResult开始:

public void finishActivity (int requestCode) 

.Force完成你之前曾与startActivityForResult(意向,INT)开始了另一项活动。

0

除了Paul-Jan的回答,您可以在您的注册活动中调用startActivity(...)之后立即调用finish()。