2015-07-10 91 views
0

我有一個LoginActivity(這是主要活動),並且在用戶登錄後將其重定向到另一個活動,當他按下後退按鈕時,它將返回到登錄活動。我嘗試使用 這樣的:Xamarin - 返回堆棧不清除

StartActivity(typeof(FragmentRendererActivity)); 
Finish(); 

這:

StartActivity(new Intent(this, typeof(FragmentRendererActivity))); 
Finish(); 

這:

Intent intent = new Intent(this, typeof(FragmentRendererActivity)); 
intent.AddFlags(ActivityFlags.NoHistory); 
StartActivity(intent); 

這:

Intent intent = new Intent(this, typeof(FragmentRendererActivity)); 
intent.AddFlags(ActivityFlags.ClearTop); 
intent.AddFlags(ActivityFlags.ClearTask); 
intent.AddFlags(ActivityFlags.NewTask); 
StartActivity(intent); 
Finish(); 

這:

<application android:label="Homecheck" android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar"> 
    <activity android:name="LoginActivity" android:noHistory="true" android:launchMode="singleTask" /> 
</application> 

...但沒有任何工作。我能夠得到的最接近的是我登錄,我去了活動B,我按下後退按鈕,應用程序退出(暫停狀態)。我恢復它,你猜對了,我回到了登錄活動。 那麼有沒有一種方法可以正確擺脫後堆棧中的活動? P.S.也許問題是我的LoginActivity是主要活動?

回答

2

如果登錄是您的MainActivity,每當應用程序關閉並打開時,它將成爲用戶看到的第一個屏幕。使用啓動畫面,可以檢查您的用戶是否已經通過身份驗證並從那裏重定向。你談論的行爲是預期的行爲

添加NoHistory = true在ontop的類的屬性將返回堆疊

[Activity(Label = "SampleApp", NoHistory = true)] 
public class LoginActivty : Activity 
{ 
} 

刪除它還另一件事你可以嘗試和明確的頂部活動

 var intent = new Intent(this, typeof(SampleActivity)); 
     intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.ClearTask | ActivityFlags.NewTask); 

     StartActivity(intent); 

     Finish(); 
+0

謝謝,我會試試這個。 – Milen

+0

@Milen如果這有助於你解決你的問題,請接受答案 – InitLipton

+1

由於我使用Xamarin的試用版本,我無法制作自己的Splash屏幕。當我下個月獲得許可證時,我會嘗試它,如果它有效,我會將其標記爲答案。謝謝。 – Milen