【问题标题】:Passing GoogleApiClient object to another activity?将 GoogleApiClient 对象传递给另一个活动?
【发布时间】:2015-03-25 03:51:27
【问题描述】:

在我的 android 应用程序中,我有一个 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 cannot be cast to java.io.Serializable。 现在,如果我尝试传递一个字符串,它可以工作。我可以理解我无法将 GoogleAPIClient 类转换为可序列化。

我应该如何将这个对象发送给其他类?

【问题讨论】:

标签: android android-intent serialization parcelable google-api-client


【解决方案1】:

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

【讨论】:

  • Application 类是什么意思? login 类还是 MainActivity 类?
  • 公共类 YourClassName 扩展应用程序{ }
  • 但我的登录类已经在扩展 ActionBarActivity。我无法扩展应用程序类
【解决方案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 类。我不能扩展两个类。
  • 检查上面的类你必须创建一个新的应用程序类请忘记登录类。
  • 所以你的意思是我应该创建一个 ApplicationClass.java 并按照你所做的方式扩展 Application 。我需要从某个地方调用这个 ApplicaitonClass,还是应该这样创建它然后离开它?
  • 谢谢,我已经添加了这两个文件,但它仍然给我同样的错误。但是如果我从登录文件中删除mGoogleApiClient 对象声明,它会给我mGoogleApiClient not found。如果我在 login.java 中保留private GoogleApiClient mGoogleApiClient; 声明,那么它会给我同样的错误。
  • 请检查您的声明和sdk,检查此链接stackoverflow.com/questions/9093043/…
猜你喜欢
  • 1970-01-01
  • 2017-01-29
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 2019-05-31
  • 1970-01-01
相关资源
最近更新 更多