0

我正在制作一个应用程序,用户可以通过单击注销按钮来注销。在注销之前,用户在活动A中,然后他点击导航抽屉中的ogout按钮,这将他带到活动B(登录屏幕活动)。现在,在这里,如果我点击后退按钮活性的,虽然我对下面的代码清除活动堆栈再次出现,甚至,即使在清除活动堆栈后,后退按钮也会重新启动previus活动

Intent intent = new Intent(curr_context, Activity_B.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
startActivity(intent); 
finish(); 
在活动B(登录活动)

另外我有下面的代码,

public void onBackPressed() { 
     if (backPressedToExitOnce) { 
      super.onBackPressed(); 
     } else { 
      this.backPressedToExitOnce = true; 
      Toast.makeText(curr_context, "Press again to exit", Toast.LENGTH_LONG).show(); 
      new Handler().postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        backPressedToExitOnce = false; 
       } 
      }, 2000); 
     } 
    } 

我真的无法知道我错在哪里。任何帮助,将不胜感激。提前致谢 !!

+0

是否有任何的代码在你的如果有登录用户,活动B开始活动A?或者用户每次都要登录该应用程序? – SaNtoRiaN

回答

1

只使用

finish(); 

我认为这将这样的伎俩 我有同样的问题 ,并告诉我,如果它的工作原理

+0

thnx回复,但我应该在哪里使用它? – varunkr

+0

而不是“backPressedToExitOnce = false;”是:D – 2015-08-08 22:06:21

+0

对不起,但这并没有任何区别:( – varunkr

1

当您从活动B开始活动A你怎么叫“完成()“之后的StartActivity?

实例ActivityB:

Intent intentActivityA= new Intent(getApplicationContext(),ActivityA.class);  
startActivity(intentActivityA); 
finish(); 

这将终止ActivityB刚开始活动A之后,当你从ActivityA使用后退按钮,它应该自动ActivityB已经完成终止应用程序。

+0

thnx的答复,是我用完了()那里呢!! – varunkr

+0

你试过使用“getApplicationContext()”而不是缓存curr_context,并做清单包含一个“parentActivityName”为activityA – Stag

1

Activty_A通话finish();推出Activity_B
你的意图设置的标志之后创建B活性一个新的任务,但不适合你关闭。

+0

thnx,但我认为我已经这样做了。请看看代码的意图部分。 – varunkr

1

您可以在活动的一个补充一点:用这种方式

// 2.0 and above 
@Override 
public void onBackPressed() { 
    moveTaskToBack(true); 
} 

// Before 2.0 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     moveTaskToBack(true); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

,当您单击后退按钮,它会带你到发射,而不是活动B