2017-04-09 121 views
-1

我正在尝试构建一个简单的登录 & 注册在android中的应用程序。我的问题是,我想处理backpressed(),但它不工作。Android压缩不起作用

实施例:我具有3个活动:登入寄存器验证。我需要的是,如果我们返回点击注册或验证,导航应该去登录,如果我们回来点击登录,应用程序应该关闭。

我已经尝试了这些代码行,但他们不工作。他们将导航到先前访问的活动。 此代码是登入活动

@Override 
public void onBackPressed() { 
    Intent i = new Intent(); 
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    finish(); 
} 

此代码寄存器活动

@Override 
public void onBackPressed() { 
    Intent i = new Intent(getBaseContext(), LoginActivity.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(i); 
} 
+0

你使用工具栏?或动作栏后退? – rafsanahmad007

+0

你应该在onBackPressed方法中调用super! –

+0

我正在使用设备后退按钮@ rafsanahmad007 –

回答

0

我需要什么是,如果我们返回点击注册或验证, 导航肩d去登录,如果我们退回点击登录, 应用程序应该关闭。

要转到SignInActivityonBackpressd()VerifyRegisterActivity

@Override 
public void onBackPressed() { 
    Intent i = new Intent(this, SignInActivity.class); 
    finishAffinity(); 
    startActivity(i); 
} 

SignInActivity

@Override 
    public void onBackPressed() { 
     finish();    
    } 

希望这有助于。

+0

这是以某种方式工作,但不是我想要的。例如。如果我登记,我压抑,它会登录,但如果我再次去注册,然后验证和压缩它将注册。 –

+0

是@tahsinRupam –

+0

21 @tahsinRupam –

0

的。如果您正在为API> 16

@Override 
public void onBackPressed(){ 
    finishAffinity(); 
    super.onBackPressed(); 
} 
+0

不工作@Sadham Hussain –

0

这是肯定的!

@Override 
    public void onBackPressed() { 
     Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_HOME); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
     finishAffinity(); 
     System.exit(0); 


    } 
+0

这是怎么回事? –

0

完成将始终转到堆栈上的上一个活动。意图标志需要在您的活动启动时进行设置,而不是在您的活动被杀死时进行设置。