将GoogleApiClient对象传递给另一个活动?

3
在我的安卓应用中,我有一个GoogleApiClient mGoogleApiClient;对象。我想把它从login.java类传递到MainActivity.java类。我尝试了使用Serializable和Parcelable。
Intent mainIntent = new Intent(this, MainActivity.class);
        mainIntent.putExtra("googleapi", (Serializable) mGoogleApiClient);
        startActivity(mainIntent);

我遇到了这个错误java.lang.ClassCastException: com.google.android.gms.common.api.c无法转换为java.io.Serializable。现在,如果我尝试传递一个字符串,它可以工作。我明白我不能将GoogleAPIClient类强制转换为Serializable。
那么我应该如何将这个对象发送到其他类?

可能是重复的问题:如何在多个活动中正确使用Google Plus登录? - JP Ventura
2个回答

4

尝试在Application类中声明mGoogleApiClient对象。


你指的Application类是什么?登录类还是MainActivity类? - user2798227
public class YourClassName extends Application{ } - user3906057
但是我的登录类已经扩展了ActionBarActivity。我无法扩展Application类。 - user2798227

2

ApplicationTest.Java

public class ApplicationClass extends Application
{
    //instantiate object public static
    public static GoogleApiClient mGoogleApiClient;
    public Context mContext;

    @Override
    public void onCreate()
    {
        super.onCreate();
        mContext = getApplicationContext();

        mGoogleApiClient = new GoogleApiClient.Builder(mContext)
            .addConnectionCallbacks(mContext)
            .addOnConnectionFailedListener(mContext)
            .addApi(Games.API).addScope(Games.SCOPE_GAMES)
            // add other APIs and scopes here as needed
            .build();
    }

    @Override
    public void onTerminate()
    {
        super.onTerminate();
    }
}

TestClass.Java

public class TestClass extends Activity
{
    @Override
    public void onCreate()
    {
        super.onCreate();
        //this way you have can use object of mGoogleApiClient anywhere in the app.
        ApplicationTest.mGoogleApiClient;
    }
}

但是在我的login.java类中,我已经扩展了ActionBarActivity类。我不能扩展两个类。 - user2798227
请查看上面的类,您需要创建一个新的应用程序类,请忘记登录类。 - Jignesh Jain
那你的意思是我应该创建一个ApplicationClass.java并像你所做的那样扩展Application。我需要从某个地方调用这个ApplicationClass吗,还是只需按照这种方式创建它并将其留下? - user2798227
谢谢,我已经添加了这两个文件,但它仍然给我相同的错误。但是,如果我从登录文件中删除mGoogleApiClient对象声明,它会给我mGoogleApiClient未找到的错误。如果我在login.java中保留private GoogleApiClient mGoogleApiClient;声明,则会给我相同的错误。 - user2798227
请检查您的声明和SDK,请查看此链接http://stackoverflow.com/questions/9093043/how-to-use-google-api-client-library - Jignesh Jain
我已经检查了声明和SDK,我已正确地导入它。 - user2798227

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接