2012-08-23 40 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