# Android_jetpack_Demo **Repository Path**: lduml/Android_jetpack_Demo ## Basic Information - **Project Name**: Android_jetpack_Demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-02-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [toc] ## 在Fragment中使用ViewModel传递数据 在Fragment中使用ViewModel传递数据 看英文版,中文版暂时还没修正 ViewModelProviders的错误 https://developer.android.com/topic/libraries/architecture/viewmodel#sharing ## 使用DataBinding 可以简化代码 https://developer.android.com/topic/libraries/data-binding 1 在app module build.gradle中 android ---> defaultConfig --->添加 dataBinding ``` dataBinding{ enabled true } ``` 2 鼠标放置activity_main.xml顶部,转换 为binding layout形式 layout变化 ```xml ******* ``` 3 Activty 文件中会根据layout文件生成ActivityMainBinding类,通过该类的实例化对象可以直接调用layout文件里各个组件 binding.textview binding.button等 4 在layout data标签中 声明变量来源 ```xml ``` name是自定义表示实例化对象 type代表类 通过data.likedNumber调用属性 或者方法 在textview中可使用 `android:text="@{String.valueOf(data.likedNumber)}"` 指明变量 在button中使用 `android:onClick="@{()->data.addLikedNumber(1)}"` 调用click时需要执行的动作 textview 错误示例当textview里的数据格式不对时,报下面错误 ``` 2020-02-28 16:09:13.982 22261-22261/com.example.demoapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.demoapplication, PID: 22261 java.lang.RuntimeException: Failed to call observer method at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:226) at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194) at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185) at androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(ReflectiveGenericLifecycleObserver.java:36) at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361) at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:300) at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:339) at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145) at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131) at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:123) at androidx.lifecycle.ReportFragment.onStart(ReportFragment.java:83) at android.app.Fragment.performStart(Fragment.java:2560) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1339) at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1581) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1642) at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3052) at android.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3009) at android.app.FragmentController.dispatchStart(FragmentController.java:195) at android.app.Activity.performStart(Activity.java:7833) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3294) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0 at android.content.res.Resources.getText(Resources.java:367) at android.widget.TextView.setText(TextView.java:6370) at com.example.demoapplication.databinding.ActivityMainBindingImpl.executeBindings(ActivityMainBindingImpl.java:156) at androidx.databinding.ViewDataBinding.executeBindingsInternal(ViewDataBinding.java:472) at androidx.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:444) at androidx.databinding.ViewDataBinding$OnStartListener.onStart(ViewDataBinding.java:1685) at java.lang.reflect.Method.invoke(Native Method) at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:216) at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194)  at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185)  at androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(ReflectiveGenericLifecycleObserver.java:36)  at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)  at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:300)  at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:339)  at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145)  at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131)  at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:123)  at androidx.lifecycle.ReportFragment.onStart(ReportFragment.java:83)  at android.app.Fragment.performStart(Fragment.java:2560)  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1339)  at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1581)  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1642)  at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3052)  at android.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3009)  at android.app.FragmentController.dispatchStart(FragmentController.java:195)  at android.app.Activity.performStart(Activity.java:7833)  at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3294)  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)  at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)  at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)  at android.os.Handler.dispatchMessage(Handler.java:107)  at android.os.Looper.loop(Looper.java:214)  at android.app.ActivityThread.main(ActivityThread.java:7356)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)  ``` ## 在app中使用矢量图标 // 为了使用矢量图标 在app module build.gradle中 android ---> defaultConfig --->添加 ``` android.defaultConfig.vectorDrawables.useSupportLibrary = true ``` ## LiveData https://developer.android.com/topic/libraries/architecture/livedata ## ViewModel https://developer.android.com/topic/libraries/architecture/viewmodel