gpt4 book ai didi

android - 如何使用 kotlin 序列化我的类对象?

转载 作者:行者123 更新时间:2023-11-29 23:30:21 30 4
gpt4 key购买 nike

我有 fragment ,我需要将我的值构造函数传递给 OncretaeView() 方法,以便我在构造函数和 tr 中接收我的值以将我的对象转换为序列化对象,但它不会转换。这是我的代码。请指导我如何序列化和反序列化我的对象。提前致谢

import java.io.Serializable

class SendingFragment: Fragment(),Serializable {
companion object {
/**
* new instance pattern for fragment
*/
@JvmStatic
fun newInstance(myObject: List<TransactionEntity>?, cc: Context, appDatabase: AppDatabase, networkDefinitionProvider: NetworkDefinitionProvider, incoming: TransactionAdapterDirection): SendingFragment {

val gson = Gson()
val gson1 = GsonBuilder().create()
val model = myObject as List<TransactionEntity>
val IT = gson.toJson(model)
System.out.println("json representation :" + IT)

val bo = ByteArrayOutputStream()
val so = ObjectOutputStream(bo)
so.writeObject(appDatabase)
so.flush()
val serializedObject = String(Base64.encode(bo.toByteArray()))

val bundle = Bundle()
bundle.putString("bundleValue", IT)
bundle.putSerializable("serializedObject",serializedObject)
val sendFragament: SendingFragment = SendingFragment()
sendFragament.setArguments(bundle)
return sendFragament
}
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

val mFragserializedObject = arguments!!.getSerializable("serializedObject")
System.out.println( "json serializedObject" + mFragserializedObject)
}
}

Appdatabase.kt

@Database(entities = {AddressBookEntry.class, Token.class, Balance.class, TransactionEntity.class}, version = 1)
@TypeConverters({RoomTypeConverters.class})
public abstract class AppDatabase extends RoomDatabase {

public abstract AddressBookDAO getAddressBook();

public abstract TokenDAO getTokens();

public abstract TransactionDAO getTransactions();

public abstract BalanceDAO getBalances();
}

更新

class BeanDemo : Serializable {

var MyAppDatabase: AppDatabase ? = null

constructor() {

}

//secoutry constructor

constructor(appDatabase: AppDatabase){
this. MyAppDatabase = appDatabase
Log.d("appDatabase : Bean", "appDatabase$appDatabase")
}

//getter/setter methods

fun getName(): AppDatabase? {
Log.d("appDatabase : getName", "appDatabase$MyAppDatabase")
return MyAppDatabase
}

fun setName(NEWAPPDB: AppDatabase) {
Log.d("appDatabase : NEWAPPDB", "appDatabase$NEWAPPDB")
MyAppDatabase = NEWAPPDB
}
}

**myfragent.kt**



fun newInstance(myObject: List<TransactionEntity>?, cc: Context, appDatabase: AppDatabase, networkDefinitionProvider: NetworkDefinitionProvider, incoming: TransactionAdapterDirection): SendingFragment {

val gson = Gson()
val gson1 = GsonBuilder().create()
val model = myObject as List<TransactionEntity>
val IT = gson.toJson(model)
// Here
val sampleVar = BeanDemo(appDatabase)
sampleVar.setName(appDatabase)
val bundle = Bundle()
bundle.putString("bundleValue", IT)
bundle.putSerializable("serializedObject",sampleVar)
val sendFragament: SendingFragment = SendingFragment()
sendFragament.setArguments(bundle)
return sendFragament

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {



val bundle = arguments
val obj = bundle!!.getSerializable("serializedObject") as BeanDemo
val name = obj.getName()

}

但是val obj =为null,在setter方法中保持值但不返回它。

最佳答案

当您创建 Model/POJO 类时,然后使用 Serializableextend class

示例-

class JsonData : Serializable {

@SerializedName("hasPreviousData")
var hasPreviousData: Boolean = false

@SerializedName("dataList")
var dataList: ArrayList<DataList>? = null

inner class DataList : Serializable {
@SerializedName("id")
var id: String? = null
@SerializedName("createdAt")
var createdAt: String? = null
@SerializedName("name")
var name: String? = null
}
}

关于android - 如何使用 kotlin 序列化我的类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52810524/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com