java - 如何将 Twitter Fabric Session 从 Activity 发送到另一个 Activity?

标签 java android twitter-fabric

我想将 Twitter session 从一个 Activity 发送到另一个 Activity 。我已经搜索(How to pass an object from one activity to another on Android)但是可序列化的 TwitterSession 有问题。该场景是当用户成功登录时,此 session 信息将转到 MainActivity。这是我的代码。 我怎么了?

TwitterSessionObject.java

import com.twitter.sdk.android.core.TwitterSession;
import java.io.Serializable;

public class TwitterSessionObject implements Serializable {

    private TwitterSession session;

    public TwitterSessionObject(TwitterSession twitterSession){

        this.session = twitterSession;
    }    
    public TwitterSession getTwitterSession() {
        return session;
    }
    public void setSession(TwitterSession session) {
        this.session = session;
    }
}

登录.java

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
        Fabric.with(this, new Twitter(authConfig));
        setContentView(R.layout.activity_login);

        loginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button);
        loginButton.setCallback(new Callback<TwitterSession>() {
            @Override
            public void success(Result<TwitterSession> result) {
                // Do something with result, which provides a TwitterSession for making API calls

                TwitterSession session = Twitter.getSessionManager().getActiveSession();
                TwitterAuthToken authToken = session.getAuthToken();
                String token = authToken.token;
                String secret = authToken.secret;

                TwitterSessionObject sessionObject = new TwitterSessionObject(session);

                Intent intent = new Intent(Login.this, MainActivity.class);
                intent.putExtra("Session", sessionObject);
                startActivity(intent);       
            }

            @Override
            public void failure(TwitterException exception) {
                // Do something on failure
            }
        });
    }

主 Activity .java

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = getIntent();
        TwitterSessionObject session = (TwitterSessionObject)intent.getSerializableExtra("Session");          
    }

最佳答案

你不能那样通过它。 TwitterSession 不可序列化,因此您不能使其成为可序列化类的成员。

由于 TwitterSession 是单例的,您可以简单地从 MainActivity 中调用以下方法

TwitterSession session = Twitter.getSessionManager().getActiveSession();

所以你的 Activity 代码看起来像

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TwitterSession session = Twitter.getSessionManager().getActiveSession();

}

关于java - 如何将 Twitter Fabric Session 从 Activity 发送到另一个 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32169278/

相关文章:

ios - Fabric 中的未知崩溃 [FIRAAlarm 取消]

java - 在 Google App Engine 1.7.3 中运行修改后的 Drools 5.5.0

java.lang.IllegalStateException : aidl is missing Android Studio 3. 0

android - 使用动画 onClick 在 ListView 中放大 ImageView

ios - 我需要获得 iOS 中 Fabric Crashlytics 等服务的许可吗?

ios - TwitterKit 共享停止工作

java - 如何从 Java 中的类返回类的枚举?

java - 获取http响应代码和所有可用的正文

java - 创建参数化构造函数

java - Android - 确定短信文本限制