java - 将数据从 kotlin 活动传递到 java DialogFragment
问题描述
需要帮助我一直在尝试找到一种方法,以便我可以将数据从 kotlin 传递到 DialogFragment 的 newInstance。下面的科特林代码
private var messageDialog: MessageDialog? = null
override fun onLoginFail(value: String?) {
//TODO:find hpw to implement this
messageDialog = MessageDialog.newInstance(getString(R.string.sign_title),getString(R.string.signin_msg,value)
messageDialog?.show(supportFragmentManager,null)
}
下面的对话框片段
public static MessageDialog newInstance(String title, String msg){
Bundle args = new Bundle();
args.putString(EXTRA_MSG,msg);
args.putString(EXTRA_TITLE,title);
MessageDialog messageDialog = new MessageDialog();
messageDialog.setArguments(args);
return messageDialog;
}
解决方案
在用于制作静态方法的 kotlin 中,我们使用伴生对象,您可以在这种情况下执行以下操作:
在消息对话框中:
companion object {
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @return A new instance of fragment Message Dialog Fragment.
*/
@JvmStatic
fun newInstance(title: String, msg: String) = MessageDialog().apply {
arguments = Bundle().apply {
putString(EXTRA_TITLE, tile)
putString(EXTRA_MSG, msg)
}
}
}
在消息对话框片段 onCreate
方法中:
var title =""
var msg = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
title= it.getString(EXTRA_TITLE)
msg = it.getString(EXTRA_MSG)
}
}
现在你可以打电话MessageDialog.newInstance("Sample title","Sample msg")
推荐阅读
- scala - 向 Sentry Logback 添加挂钩以清理数据
- azure - 在 Kusto 中使用联合和循环运算符将多个表合并为一个表
- excel - 我们如何使用 oledb 使用长度超过 256 个字符的字符串更新 excel 中的单元格
- sql-server - SQL Server SQL Query中的Excel四分位函数
- javascript - Chrome 扩展程序:从弹出窗口访问选项卡
- javascript - 即使刷新或删除,如何在 html 中保持相同的内容
- arrays - Excel:创建一个包含 n 次出现值 x 的数组
- java - 如何通过按键在两个数字之间切换?
- php - 我想将 Array 转换为 stdobject
- javascript - 如何在 Vue Datepicker 中禁用当前日期前最多 14 天的所有日期?