5

oAuth在我的应用程序中使用 Twitter 库。用户正在使用他们的 Twitter 帐户登录。

在活动 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 需要这个选项。我究竟做错了什么?任何帮助或建议(也许是关于 Twitter)都会很棒。

4

1 回答 1

2

我确信应该有更有效的方法来解决这个问题,但是,我建议一些不同的方法。

只需finish()在开始活动后调用方法,活动 A 就会完成,并且当用户在活动 B 中按下后退按钮时,应用程序会如您所愿返回主屏幕。

还要检查两次对话以避免任何异常,即检查这个问题(以及答案)以理解我的意思。

于 2012-08-23T13:43:03.417 回答