android - 升级到 Studio 4.2 Canary 5 后 Android Studio 数据绑定错误
问题描述
我正在使用数据绑定来扩充片段的视图。gradle
在我将 Android Studio 升级到 4.2 Canary 5 之前它工作正常。它还要求我4.2.0-alpha05
升级将默认语言功能升级到Java 8
. 但是现在数据绑定部分正在抛出一个NullPointerException
. 我在这里需要一些帮助。下面是错误的痕迹。
2020-07-22 01:11:13.437 18307-18307/com.deamat.mydeamat.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.deamat.mydeamat.debug, PID: 18307
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.deamat.mydeamat.debug/com.deamat.mydeamat.MainActivity}: java.lang.IllegalStateException: FragmentSignupBinding.in… false
) must not be null
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: java.lang.IllegalStateException: FragmentSignupBinding.in… false
) must not be null
at com.deamat.auth.SignupFragment.onCreateView(SignupFragment.kt:27)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722)
at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247)
at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541)
at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1256)
at android.app.Activity.performStart(Activity.java:6959)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2890)
... 9 more
这是数据绑定调用
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val binding = FragmentSignupBinding.inflate(
inflater,
container,
false
)
...
}
注意:我在我的应用程序中使用了多个模块,并且我在每个模块中启用了数据绑定。但是 login_fragment 布局与 Fragment 类位于同一模块中。
解决方案
自从更新到 AS 4.2 Canary 5 / Gradle 4.2.0-alpha05 后,我们的数据绑定也被破坏了。我们甚至无法构建我们的应用程序。
在我们的例子中,它似乎与自定义 BindingAdapter 相关。从布局文件中删除它们的使用,可以构建应用程序 - 尽管缺少相应的逻辑。真的不是一个解决方案,所以我们现在不得不降级到 Canary 4。
推荐阅读
- python - 使用python从文本中删除\ n
- flutter - 我怎样才能使用颤振滑动让只有一个项目移动??不起作用的关键
- go - golang 中的 cli 与 Azure AD 使用 MSAL 对用户进行身份验证
- node.js - 条带连接错误 Cloudflare worker
- r - ggplot 函数只有颜色的隔膜
- javascript - 为什么打字稿会抛出绑定元素“目标”隐含地具有“任何”类型.ts(7031)?
- php - 如何处理 PHPDoc 块和打印宽度 PHPCS/PHPMD 规则?
- javascript - Framer Motion 不透明度关键帧仅在初始渲染时进行动画处理
- regex - 我需要保持某种模式之间的任何东西
- python - execute() 接受 2 个位置参数,但为 db.execute() 烧瓶 psql 插入提供了 3 个