android - 初始化自定义接口侦听器以将数据从 Activity 传输到 Viewoager 片段
问题描述
我想将数据从活动传输到ViewPager2
直接由 a 调用的片段。我已经看到有关使用 Intent 和 Fragment Bundle 的答案,但这些不符合我的需要,如果我在尝试时失败了,我会退回到那个
我有一个活动将数据传输到另一个活动,该活动打开 ViewPager 并在片段中显示数据。转移的原因是共享元素转换有效。
我尝试在 Activity 中初始化接口的侦听器,但它不起作用,我不知道我在做什么,初始化时我缺少什么?或者这是错误的道路?
class StopwatchActivity : AppCompatActivity() {
private lateinit var listener: StopwatchListener
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityStopwatchBinding.inflate(layoutInflater)
setContentView(binding.root)
listener = context as StopwatchListener
...
}
...
override fun onPause() {
super.onPause()
binding.apply {
listener.getTheTime(
textViewStopwatchMinutesActivity.text.toString(),
textViewStopwatchSecondsActivity.text.toString(),
textViewStopwatchMillisActivity.text.toString()
)
}
}
...
interface StopwatchListener {
fun getTheTime(min: String, sec: String, millis: String)
}
}
这是错误
Process: com.homeofficeprojects.countmyrepstoo, PID: 16466
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.homeofficeprojects.countmyrepstoo/com.homeofficeprojects.countmyrepstoo.StopwatchActivity}: kotlin.UninitializedPropertyAccessException: lateinit property context has not been initialized
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property context has not been initialized
at com.homeofficeprojects.countmyrepstoo.StopwatchActivity.onCreate(StopwatchActivity.kt:49)
at android.app.Activity.performCreate(Activity.java:7994)
at android.app.Activity.performCreate(Activity.java:7978)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
解决方案
推荐阅读
- flutter - Flutter App 中的导航 - 无法按预期工作
- vue.js - 图像未显示在
Element-ui 的 - java - 为什么保存图片时会出错?
- javascript - 为什么 Mongoose 总是得到我数据库的旧快照?
- kubernetes - 在 Azure AKS 容器中以 root 身份读取文件时权限被拒绝
- python - 输入使 tkinter.filedialog.askdirectory() 在 PyCharm 上不起作用
- javascript - 'if' 语句和 eventListener 问题
- php - 简单的回显功能不吐数字
- c# - 由多个 Autofac 组件共享的应用程序范围初始化的最佳实践?(在这种情况下,Aspose 许可证。)
- javascript - 如何在 Vue 中为单页应用程序创建导航栏?