相关疑难解决方法(0)

Android:Parcelable和Serializable之间的区别?

为什么Android提供了2个用于序列化对象的接口?Serializable对象是否与Android Binder和AIDL文件进行交互?

android serializable parcelable

289
推荐指数
9
解决办法
15万
查看次数

如何在Android上将对象从一个活动传递到另一个活动?

我需要能够在我的应用程序中的多个活动中使用一个对象,并且它需要是同一个对象.做这个的最好方式是什么?

我已经尝试将对象设置为"公共静态",因此可以通过其他活动访问它,但由于某种原因,这并没有削减它.还有另一种方法吗?

android object android-activity

123
推荐指数
6
解决办法
16万
查看次数

自定义枚举Serializable也是吗?

我理解Enum是Serializable.因此,这样做是安全的.(selectedCountry是enum Country)

没有客户成员变量的原始枚举

public enum Country {
    Australia,
    Austria,
    UnitedState;
}
Run Code Online (Sandbox Code Playgroud)

分段

@Override
public void onActivityCreated (Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {
        selectedCountry = (Country)savedInstanceState.getSerializable(SELECTED_COUNTRY_KEY);
    }
}

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putSerializable(SELECTED_COUNTRY_KEY, selectedCountry);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我在自定义枚举类中有非可序列化成员,该怎么办?例如,

原始枚举客户成员变量

package org.yccheok;

import org.yccheok.R;

/**
 *
 * @author yccheok
 */
public enum Country {
    Australia(R.drawable.flag_au),
    Austria(R.drawable.flag_at),
    UnitedState(R.drawable.flag_us);

    Country(int icon) {
        this.icon = icon;
        nonSerializableClass = new NonSerializableClass(this.toString());
    }

    public int getIcon() {
        return icon;
    } …
Run Code Online (Sandbox Code Playgroud)

java android

56
推荐指数
2
解决办法
6万
查看次数

如何扩展实现Parcelable接口的android类?

首先,我检查了这个答案.

我想要做的是扩展Location类调用它LocationPlus有一些成员变量.我想要实现的功能是将LocationPlus类的对象从一个活动传递到另一个活动.

这是我的 CREATOR

public static final Parcelable.Creator<LocationPlus> CREATOR = new Parcelable.Creator<LocationPlus>() {
    @Override 
    public LocationPlus createFromParcel(Parcel source) {
        return new LocationPlus(source);
    }
    @Override 
    public LocationPlus[] newArray(int size) {
        return new LocationPlus[size];
    }
};
Run Code Online (Sandbox Code Playgroud)

我面临的问题是这个错误

Implicit super constructor Location() is undefined. Must explicitly invoke another constructor
Run Code Online (Sandbox Code Playgroud)

在尝试编写构造函数时

public LocationPlus(Parcel in) {
Run Code Online (Sandbox Code Playgroud)

有评论的人要求我发布LocationPlus类,所以在这里

public class LocationPlus extends Location{

    private int mBattery = -1;

    public LocationPlus(String locationName) {
        super(locationName);
    }

    public LocationPlus(Location location) { …
Run Code Online (Sandbox Code Playgroud)

inheritance android android-location

12
推荐指数
3
解决办法
1万
查看次数

SQLite或序列化

我正在编写一个需要存储数据的应用程序.单个数据包大约有4个类,它们之间有很多依赖关系.例如,类A有一个对象列表B和B有一个对象列表C和几个依赖项......

我想知道什么会更好.将它们保存在SQLite数据库中或单独序列化每个包并将它们存储在序列化文件中?

android

9
推荐指数
1
解决办法
3715
查看次数