2012-08-23 37 views
4

我在我的應用程序中使用Twitter oAuth庫。用戶使用Twitter帳戶登錄。Android:如何使用SingleTask清除意圖堆棧

在活動A中,twitter登錄可用。當用戶登錄時,我想開始沒有歷史記錄的活動B.這是我所有的東西:

首先,Manifest.xml,所以我設置launchMode=singleTask如Twitter API請求:

<activity 
    android:name=".A_Activity" 
    android:label="@string/app_name" 
    android:launchMode="singleTask" 
    android:theme="@android:style/Theme.Black.NoTitleBar"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:scheme="my_twitter_scheme" /> 
    </intent-filter> 
</activity> 

下面是我開始的活動B:

Intent i = new Intent(A.this, B.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(i); 

注:我通過BroadcastReceiver實例調用活動B.

當我登錄,我的接收器開始活動B正確,但不幸的是,當我按下後退按鈕,應用義無反顧地活動A.

我想這是關於launchMode和我說,微博需要一個選項。我究竟做錯了什麼?任何幫助或建議(也許關於Twitter)都會很棒。

回答

2

我確定應該有更有效的方法來解決這個問題,但是,我建議一些不同的東西。

只需在開始活動後調用finish()方法,活動A就會結束,當用戶按下活動B應用程序中的按鈕時,將按照您的希望返回主屏幕。

檢查兩次您的對話框以避免任何異常,即檢查此question(和答案)以理解我的意思。

+0

謝謝你的回答,它的工作。 – Martin