Android 如何实现图书馆日历视图
我使用图书馆使日历应用程序类似于谷歌日历周查看日历。我在Android 如何实现图书馆日历视图,android,kotlin,calendarview,Android,Kotlin,Calendarview,我使用图书馆使日历应用程序类似于谷歌日历周查看日历。我在build.gradle中阅读了所有文档并添加了实现'com.jonaswanke.calendar:calendar:0.1.1',但是当我将日历视图添加到activity\u mail.xml <com.jonaswanke.calendar.CalendarView android:id="@+id/calendar" android:layout_width="match_pare
build.gradle
中阅读了所有文档并添加了实现'com.jonaswanke.calendar:calendar:0.1.1'
,但是当我将日历视图添加到activity\u mail.xml
<com.jonaswanke.calendar.CalendarView
android:id="@+id/calendar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:range="week" />
以下异常在应用程序启动时使我的应用程序崩溃
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 13101
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}: android.view.InflateException: Binary XML file line #9 in com.example.myapplication:layout/activity_main: Binary XML file line #9 in com.example.myapplication:layout/activity_main: Error inflating class com.jonaswanke.calendar.CalendarView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3895)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4074)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8347)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
Caused by: android.view.InflateException: Binary XML file line #9 in com.example.myapplication:layout/activity_main: Binary XML file line #9 in com.example.myapplication:layout/activity_main: Error inflating class com.jonaswanke.calendar.CalendarView
Caused by: android.view.InflateException: Binary XML file line #9 in com.example.myapplication:layout/activity_main: Error inflating class com.jonaswanke.calendar.CalendarView
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:864)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1016)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:971)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1133)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1094)
at android.view.LayoutInflater.inflate(LayoutInflater.java:692)
at android.view.LayoutInflater.inflate(LayoutInflater.java:536)
at android.view.LayoutInflater.inflate(LayoutInflater.java:483)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:696)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:27)
at android.app.Activity.performCreate(Activity.java:8085)
at android.app.Activity.performCreate(Activity.java:8073)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3868)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4074)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8347)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/coroutines/experimental/CoroutineDispatcher;
at com.jonaswanke.calendar.CalendarView.<init>(CalendarView.kt:495)
E/AndroidRuntime: at com.jonaswanke.calendar.CalendarView.<init>(CalendarView.kt:32)
at com.jonaswanke.calendar.CalendarView.<init>(Unknown Source:6)
... 28 more
Caused by: java.lang.ClassNotFoundException: kotlinx.coroutines.experimental.CoroutineDispatcher
at java.lang.VMClassLoader.findLoadedClass(Native Method)
at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 31 more
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/coroutines/experimental/AbstractCoroutineContextElement;
... 31 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "kotlin.coroutines.experimental.AbstractCoroutineContextElement" on path: DexPathList[[zip file "/data/app/com.example.myapplication-_1QFEnFxaCJxdEfjNQvp0g==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-_1QFEnFxaCJxdEfjNQvp0g==/lib/arm64, /system/lib64, /hw_product/lib64, /system/product/lib64, /prets/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:209)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 31 more
I/Process: Sending signal. PID: 13101 SIG: 9
E/AndroidRuntime:致命异常:主
进程:com.example.myapplication,PID:13101
java.lang.RuntimeException:无法启动活动组件信息{com.example.myapplication/com.example.myapplication.MainActivity}:android.view.InflateException:com.example中的二进制XML文件行#9.myapplication:layout/activity#main:com.example中的二进制XML文件行#9.myapplication:layout/activity#main:对类com.jonaswanke.calendar.CalendarView进行膨胀时出错
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3895)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4074)
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
位于android.os.Handler.dispatchMessage(Handler.java:110)
位于android.os.Looper.loop(Looper.java:219)
位于android.app.ActivityThread.main(ActivityThread.java:8347)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
原因:android.view.InflateException:com.example中的二进制XML文件行#9.myapplication:layout/activity#main:com.example中的二进制XML文件行#9.myapplication:layout/activity#main:com.jonaswanke.calendar.CalendarView类膨胀错误
原因:android.view.InflateException:com.example.myapplication:layout/activity#9中的二进制XML文件行#main:错误膨胀类com.jonaswanke.calendar.CalendarView
原因:java.lang.reflect.InvocationTargetException
位于java.lang.reflect.Constructor.newInstance0(本机方法)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:343)
在android.view.LayoutInflater.createView(LayoutInflater.java:864)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1016)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:971)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:1133)
位于android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1094)
在android.view.LayoutInflater.充气(LayoutInflater.java:692)
在android.view.LayoutInflater.inflate(LayoutInflater.java:536)
在android.view.LayoutInflater.inflate(LayoutInflater.java:483)
位于androidx.appcompat.app.appcompatedelegateimpl.setContentView(appcompatedelegateimpl.java:696)
位于androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)
在com.example.myapplication.MainActivity.onCreate上(MainActivity.kt:27)
位于android.app.Activity.performCreate(Activity.java:8085)
位于android.app.Activity.performCreate(Activity.java:8073)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3868)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4074)
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
位于android.os.Handler.dispatchMessage(Handler.java:110)
位于android.os.Looper.loop(Looper.java:219)
位于android.app.ActivityThread.main(ActivityThread.java:8347)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
原因:java.lang.NoClassDefFoundError:未能解析:Lkotlinx/coroutines/experimental/CoroutineDispatcher;
在com.jonaswanke.calendar.CalendarView.(CalendarView.kt:495)
E/AndroidRuntime:com.jonaswanke.calendar.CalendarView。(CalendarView.kt:32)
访问com.jonaswanke.calendar.CalendarView。(未知来源:6)
... 28多
原因:java.lang.ClassNotFoundException:kotlinx.coroutines.experimental.CoroutineDispatcher
位于java.lang.VMClassLoader.findLoadedClass(本机方法)
位于java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:363)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 还有31个
原因:java.lang.NoClassDefFoundError:未能解析:Lkotlin/coroutines/experimental/AbstractCoroutineContextElement;
... 还有31个
原因:java.lang.ClassNotFoundException:在路径:DexPathList[[zip file”/data/app/com.example.myapplication-\u 1QFEnFxaCJxdEfjNQvp0g==/base.apk]的NativeLibrary目录中未找到类“kotlin.coroutines.experimental.AbstractCoroutineContextElement”=[/data/app/com.example.myapplication-\u 1QFEnFxaCJxdEfjNQvp0g==/lib/arm64、/system/lib64、/hw_product/lib64、/system/product/lib64、/prets/lib64]]
位于dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:209)
位于java.lang.ClassLoader.loadCla
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
calendar.eventRequestCallback = {
populate(it)
}
}
@Suppress("MagicNumber")
private fun populate(week: Week, force: Boolean = false) {
if (!force && calendar.cachedEvents.contains(week))
return
val events = mutableListOf<Event>()
for (i in 0..15) {
val id = nextId++.toString()
val start = week.start + abs(random.nextLong()) % DateUtils.WEEK_IN_MILLIS
events.add(BaseEvent(
id,
id,
(random.nextInt() or 0xFF000000.toInt()) and 0x00202020.inv(),
start,
start + abs(random.nextLong()) % (DateUtils.DAY_IN_MILLIS / 8)))
}
for (i in 0..3) {
val id = nextId++.toString()
val start = week.start + abs(random.nextLong()) % DateUtils.WEEK_IN_MILLIS
events.add(BaseEvent(
id,
id,
(random.nextInt() or 0xFF000000.toInt()) and 0x00202020.inv(),
start,
start + abs(random.nextLong()) % (DateUtils.DAY_IN_MILLIS * 7),
true))
}
calendar.setEventsForWeek(week, events)
}