将数据从一个函数发送到另一个函数



深入了解函数insertUserinsertMoney的内部

我想把insertUser中id的值发送给insertMoney且id为变量

我已经尝试了var idT和insertUser,但在其他函数中,insertMoney返回""

这是我的viewModel:
var idT= ""
class AddUserViewModel(
val mUserInfoDAO: UserDAO,
val mTransactionDAO: TransactionsDAO,
val mLoan: LoanDAO,
val mBankDAO: BankDAO,
application: Application
) :
AndroidViewModel(application) {
var viewModelJob = Job()
val uiScope = CoroutineScope(Dispatchers.Main + viewModelJob)

fun insertUser(
fullName: String,
accountId: String,
mobileNumber: String,
phoneNumber: String,
dateOfCreation: String,
address: String,
) {
uiScope.launch {
try {
Log.d("TAG", "insertTest")
val user = UserInfo(
0L,
fullName,
accountId,
mobileNumber,
phoneNumber,
dateOfCreation,
address
)
withContext(Dispatchers.IO) {

#*#*#*#*#*#* I WANT TO SENT VALUE OF *id* TO insertMoney #*#*#*#*#*#* 
val id = mUserInfoDAO.insert(user)


idT=id.toString()
Log.d("TAG", "insertUser: $idT")
}
} catch (e: Exception) {
Log.d("TAG", "insertContact: ${e.message}")
}
}
}
fun insertMoney(
amount: String,
increasePage: String?
) {
Log.d("TAG", "insertUserTTT: $idT")
var bankId: Long = bankInfo.value?.get(selectedItemPosition)?.bankId!!
uiScope.launch {
mTransactionDAO.insert(
Transaction(
0L,

*#*#*#*#*#HERE#*#*#*#*#*#
// id //,
null,
bankId,
null,
amount,
null,
null,
null,
increasePage
)
)
}
}

在片段中调用这两个函数:

mAddUserViewModel.addUser.observe(viewLifecycleOwner, Observer {
if (it == true) {


mAddUserViewModel.insertUser(
mAddUserListBinding.fullName.text.toString(),
mAddUserListBinding.accountId.text.toString(),
mAddUserListBinding.mobileNumber.text.toString(),
mAddUserListBinding.phoneNumber.text.toString(),
mAddUserListBinding.createdDate.text.toString(),
mAddUserListBinding.edtAddress.text.toString(),
)


val firstMoney = "firstMoney"
mAddUserViewModel.insertMoney(
mAddUserListBinding.firstMoney.text.toString(),
firstMoney
)
findNavController().popBackStack()
}
})

我解决了。

我混合了两个函数体我删除insertMoney函数并将其主体添加到insertUser并且我获得editText的值并将其插入到insertUser

fun insertUser(
fullName: String,
accountId: String,
mobileNumber: String,
phoneNumber: String,
dateOfCreation: String,
address: String,
) {
uiScope.launch {
try {
Log.d("TAG", "insertTest")
val user = UserInfo(
0L,
fullName,
accountId,
mobileNumber,
phoneNumber,
dateOfCreation,
address
)
withContext(Dispatchers.IO) {
val id = mUserInfoDAO.insert(user)
Log.d("TAG", "insertUser: $amount")
val increasePage = "firstMoney"
val bankId: Long = bankInfo.value?.get(selectedItemPosition)?.bankId!!
mTransactionDAO.insert(
Transaction(
0L,
id,
null,
bankId,
null,
amount,
null,
null,
null,
increasePage
)
)
}
} catch (e: Exception) {
Log.d("TAG", "insertContact: ${e.message}")
}
}
}
private var username = ObservableField("").toString()
fun afterUserNameChange(s: CharSequence) {
Log.i("truck", s.toString());
amount = s.toString()
this.username = s.toString()
}
fun insertUser(
fullName: String,
accountId: String,
mobileNumber: String,
phoneNumber: String,
dateOfCreation: String,
address: String,
function:(Int,String,String)->Unit ,
firstMoney:String  )  {
uiScope.launch {
try {
Log.d("TAG", "insertTest")
val user = UserInfo(
0L,
fullName,
accountId,
mobileNumber,
phoneNumber,
dateOfCreation,
address
)
withContext(Dispatchers.IO) {
val id = mUserInfoDAO.insert(user)
function (id, firstMoney,"first money")
}
} catch (e: Exception) {
Log.d("TAG", "insertContact: ${e.message}")
}
}   
}
insertUser(......,...,..., ::insertMoney,"30")

最新更新