У меня есть фрагмент, и мне нужно передать конструктор значений в методы 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, в методе установки он содержит значение, но не возвращает его.