2011-06-21 71 views
0

我有一个要求,我可以从应用程序中的任何活动按注销按钮,事情是当我按下注销按钮,我需要得到login屏幕没有显示以前的活动。我使用:如何清除android中的活动堆栈?

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 

我开始这样的活动:

public void onClick(View v) { 
    try 
    { 
     Intent intent = new Intent(getContext(), Login.class); 
     v.getRootView().getContext().startActivity(intent); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     removeSessionFiles(); 
     //startActivity (new Intent(getApplicationContext(), Activity1.class)); 
    } 
    catch (Exception e) 
    { 
    String str = e.toString(); 
    } 
} 

我到login屏幕当我按下logout按钮,但是当我按下设备上back按钮,它是显示以前的活动 - 当我按下login屏幕中的返回按钮时,我应该进入Android主屏幕。请你能为此提出一个解决方案吗?

+0

显示如何启动活动...因为设置上述标志将执行该工作... – Dinash

+0

为什么不使用startActivity加载登录活动并完成当前活动? –

+0

你可以检查它dinash – amj

回答

1

由于dinash国旗上面说的应该是活动前集合开始......什么开始活动后,设置标志点....代码应该是这个样子,

Intent intent = new Intent(getContext(), Login.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     v.getRootView().getContext().startActivity(intent); 

     removeSessionFiles(); 
0

豪人只是把标志设置行只是startactivity前行......这港岛线解决您的问题...

希望这有助于...

+0

是的,它解决了我的问题,但仍然有另一个,即当我通过3-4活动,然后按注销按钮它不会驱使我到登录屏幕,而是它带我去上一个活动再次,如果我现在再次注销注销按钮,那么它给予登录屏幕。这是问题,你可以找到我这个请求的解决方案。 – amj

0
调用startActivity将解决你的问题之前

setFlags

public void onClick(View v) { 

try { 
Intent intent = new Intent(getContext(), Login.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
v.getRootView().getContext().startActivity(intent); 
removeSessionFiles(); 
} catch (Exception e) { 
String str = e.toString(); 
} 
}