对于想了解WPF绑定Canvas.Left/Canvas.Top到PointDependencyProperty,使用PointAnimation的读者,本文将是一篇不可错过的文章,我们将详细介绍wp
对于想了解WPF绑定Canvas.Left / Canvas.Top到Point DependencyProperty,使用PointAnimation的读者,本文将是一篇不可错过的文章,我们将详细介绍wpf绑定对象,并且为您提供关于android Conflict with dependency 'com.android.support:support-annotations' in project ':app'.、Android 构建失败,使用 AS 2020.3.1 和 Compose 1.0.0 InstantiationError 或 NoClassDefFoundError: WrappedSimpleFunctionDescriptor、android-Canvas中的java.lang.UnsupportedOperationException、android-NullPointerException在lockCanvas()的有价值信息。
本文目录一览:- WPF绑定Canvas.Left / Canvas.Top到Point DependencyProperty,使用PointAnimation(wpf绑定对象)
- android Conflict with dependency 'com.android.support:support-annotations' in project ':app'.
- Android 构建失败,使用 AS 2020.3.1 和 Compose 1.0.0 InstantiationError 或 NoClassDefFoundError: WrappedSimpleFunctionDescriptor
- android-Canvas中的java.lang.UnsupportedOperationException
- android-NullPointerException在lockCanvas()
WPF绑定Canvas.Left / Canvas.Top到Point DependencyProperty,使用PointAnimation(wpf绑定对象)
请考虑以下简化的例子来说明我的问题:
MainWindow.xaml
<Window x:xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="500" Height="500" Title="Click anywhere to animate the movement of the blue thingy..."> <Canvas x:Name="canvas" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="AntiqueWhite" MouseDown="canvas_MouseDown" /> </Window>
MainWindow.xaml.cs
using System; using System.Windows; using System.Windows.Input; using System.Windows.Media.Animation; namespace WpfApplication1 { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.canvas.Children.Add(new Thingy()); } private void canvas_MouseDown(object sender,MouseButtonEventArgs e) { var thingy = (Thingy)this.canvas.Children[0]; var from = new Point(0.0,0.0); var to = new Point( canvas.ActualWidth - thingy.ActualWidth,canvas.ActualHeight - thingy.ActualHeight ); var locAnim = new PointAnimation( from,to,new Duration(TimeSpan.FromSeconds(5)) ); locAnim.Completed += (s,a) => { // Only at this line does the thingy move to the // correct position... thingy.Location = to; }; thingy.Location = from; thingy.BeginAnimation(Thingy.LocationProperty,locAnim); } } }
Thingy.xaml
添加应用程序清单以确保在Windows XP,Vista和7上提升权限的可靠程度如何?
C#窗体不呈现控件
stringinput从文本框if / else
我有什么select使用C#在Windows Server上添加和删除IPSec策略?
如果外部命令的输出是废话,最好抛出exception?
<UserControl x:xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="50" Height="50" Background="Blue" />
Thingy.xaml.cs
using System.Windows; using System.Windows.Controls; using System.Windows.Data; namespace WpfApplication1 { public partial class Thingy : UserControl { public static DependencyProperty LocationProperty = DependencyProperty.Register( "Location",typeof(Point),typeof(Thingy) ); public Thingy() { InitializeComponent(); Canvas.SetLeft(this,0.0); Canvas.SetTop(this,0.0); var xBind = new Binding(); xBind.source = this; xBind.Path = new PropertyPath(Canvas.LeftProperty); xBind.Mode = BindingMode.TwoWay; var yBind = new Binding(); yBind.source = this; yBind.Path = new PropertyPath(Canvas.TopProperty); yBind.Mode = BindingMode.TwoWay; var locBind = new MultiBinding(); locBind.Converter = new PointConverter(); locBind.Mode = BindingMode.TwoWay; locBind.Bindings.Add(xBind); locBind.Bindings.Add(yBind); BindingOperations.SetBinding( this,Thingy.LocationProperty,locBind ); } public Point Location { get { return (Point)this.GetValue(LocationProperty); } set { this.SetValue(LocationProperty,value); } } } }
PointConverter.cs
using System; using System.Globalization; using System.Windows; using System.Windows.Data; namespace WpfApplication1 { public class PointConverter : IMultiValueConverter { public object Convert(object[] v,Type t,object p,CultureInfo c) { return new Point((double)v[0],(double)v[1]); } public object[] ConvertBack(object v,Type[] t,CultureInfo c) { return new object[] { ((Point)v).X,((Point)v).Y }; } } }
这里的目标是:
使用LocationProperty来操作和访问Canvas.LeftProperty和Canvas.TopProperty值。
用PointAnimation类animation说LocationProperty 。
目标1似乎工作正常,只有在试图animation化LocationProperty ,它不会像预期的那样运行。
“预期”是指Thingy的实例应该随着animation的进展而移动。
我能够使用DoubleAnimation类的两个实例来完成此操作。
如果问题是Point是一个值types,那么我怀疑我可以定义我自己的Pointtypes和我自己的AnimationTimeline 。 这不是我想要做的。 这是一个更大的项目的一部分, LocationProperty将用于其他事情。
说实话,底线是,在我看来,这应该只是工作,你能告诉我:
为什么不呢?
如果有解决问题的定义?
我还会提到,我针对这个项目的.Net Framework 4.5。
谢谢。
从所有当前暂停的线程获取堆栈跟踪信息(托pipe)
Windows Azure支持除.NET以外的其他技术
Windows句柄如果控件设置为可见= false(.NET)
尝试安装Windows服务时,InstallUtil.exe被删除
微软打破了.NET兼容性?
这是最简单的代码来动画的东西。
它利用依赖属性回调
不使用绑定
不使用转换器
不使用故事板
主窗口:
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media.Animation; namespace WpfApplication1 { public partial class MainWindow { public MainWindow() { InitializeComponent(); } private void MainWindow_OnMouseDown(object sender,MouseButtonEventArgs e) { var x = Canvas.GetLeft(Control1); var y = Canvas.GetTop(Control1); x = double.IsNaN(x) ? 0 : x; y = double.IsNaN(y) ? 0 : y; var point1 = new Point(x,y); var point2 = e.GetPosition(this); var animation = new PointAnimation(point1,point2,new Duration(TimeSpan.FromSeconds(1))); animation.EasingFunction = new CubicEase(); Control1.BeginAnimation(UserControl1.LocationProperty,animation); } } }
主窗口:
<Window x:xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApplication1" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525" MouseDown="MainWindow_OnMouseDown"> <Canvas> <local:UserControl1 Background="Red" Height="100" Width="100" x:Name="Control1" /> </Canvas> </Window>
控制:
using System.Windows; using System.Windows.Controls; namespace WpfApplication1 { public partial class UserControl1 { public static readonly DependencyProperty LocationProperty = DependencyProperty.Register( "Location",typeof(UserControl1),new UIPropertyMetadata(default(Point),OnLocationChanged)); public UserControl1() { InitializeComponent(); } public Point Location { get { return (Point) GetValue(LocationProperty); } set { SetValue(LocationProperty,value); } } private static void OnLocationChanged(DependencyObject d,DependencyPropertyChangedEventArgs e) { var control1 = (UserControl1) d; var value = (Point) e.NewValue; Canvas.SetLeft(control1,value.X); Canvas.SetTop(control1,value.Y); } } }
控制:
<UserControl x:xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WpfApplication1" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> </UserControl>
Todo:根据您的需要调整代码:)
编辑:一个简单的双向绑定,听Canvas.[Left|Top]Property :
(待加强)
using System; using System.ComponentModel; using System.Windows; using System.Windows.Controls; namespace WpfApplication1 { public partial class UserControl1 { public static readonly DependencyProperty LocationProperty = DependencyProperty.Register( "Location",new PropertyMetadata(default(Point),OnLocationChanged)); public UserControl1() { InitializeComponent(); DependencyPropertyDescriptor.FromProperty(Canvas.LeftProperty,typeof(Canvas)) .AddValueChanged(this,OnLeftChanged); DependencyPropertyDescriptor.FromProperty(Canvas.TopProperty,OnTopChanged); } public Point Location { get { return (Point) GetValue(LocationProperty); } set { SetValue(LocationProperty,value); } } private void OnLeftChanged(object sender,EventArgs eventArgs) { var left = Canvas.GetLeft(this); Location = new Point(left,Location.Y); } private void OnTopChanged(object sender,EventArgs e) { var top = Canvas.GetTop(this); Location = new Point(Location.X,top); } private static void OnLocationChanged(DependencyObject d,value.Y); } } }
我喜欢Aybe的答案,但它没有解释为什么原始代码不起作用。 我运行你的代码,并尝试了一些替代方法,看来发生了什么事是绑定转换器在动画过程中被忽略。 如果您在转换器方法中设置断点,或者执行Debug.WriteLine,则无论哪种方式,您都可以看到转换器不会在整个动画中被调用,而只是在您的代码中明确设置属性时。
深入挖掘,问题在于您设置Thingy绑定的方式。 绑定源属性应该是Thingy.Location而目标属性应该是Canvas.Left和Canvas.Top 。 你有倒退 – 你正在使Canvas.Left和Canvas.Top源属性和Thingy.Location目标属性。 您可能会认为将其设置为双向绑定可以使其工作(并且在您明确设置Thingy.Location属性时),但是看起来双向绑定方面在动画中将被忽略。
一个解决方案是不要在这里使用多重绑定。 当多个属性被多个属性或条件所取代时,多重绑定是真正的。 在这里,你有多个属性( Canvas.Left和Canvas.Top ),你想用一个属性来源 – Thingy.Location 。 所以,在Thingy构造函数中:
var xBind = new Binding(); xBind.source = this; xBind.Path = new PropertyPath(Thingy.LocationProperty); xBind.Mode = BindingMode.OneWay; xBind.Converter = new PointTodoubleConverter(); xBind.ConverterParameter = false; BindingOperations.SetBinding(this,Canvas.LeftProperty,xBind); var yBind = new Binding(); yBind.source = this; yBind.Path = new PropertyPath(Thingy.LocationProperty); yBind.Mode = BindingMode.OneWay; yBind.Converter = new PointTodoubleConverter(); yBind.ConverterParameter = true; BindingOperations.SetBinding(this,Canvas.TopProperty,yBind);
另一个区别是绑定转换器。 而不是采取两个doubles ,给你一个Point ,我们需要一个转换器,需要一个Point并提取用于Canvas.Left和Canvas.Top属性(我使用ConverterParameter指定哪一个是所需的)的双。 所以:
public class PointTodoubleConverter : IValueConverter { public object Convert(object value,Type targettype,object parameter,CultureInfo culture) { var pt = (Point)value; bool isY = (bool)parameter; return isY ? pt.Y : pt.X; } public object ConvertBack(object value,CultureInfo culture) { return value; } }
这使得动画工作,同时仍然使用绑定和转换器。 唯一的缺点是Canvas属性和Thingy.Location之间的绑定必须是单向的,因为没有办法将Canvas.Left或Canvas.Top单独转换回完整的Point 。 换句话说,如果您随后更改Canvas.Left或Canvas.Top , Thingy.Location将不会更新。 (这当然也适用于任何无约束的解决方案)。
但是,如果你回到原来的多重绑定版本,只需将代码添加到Location属性更改处理程序来更新Canvas.Left和Canvas.Top ,就可以拥有你的蛋糕并且可以吃掉它。 他们不需要在这一点上是TwoWay绑定,因为你正在更新Location的属性更改处理程序中的Canvas.Left和Canvas.Top 。 基本上所有的实际绑定然后是确保Canvas.Left和Canvas.Top做的Location更新。
无论如何,这个谜还是解决了为什么你原来的方法不起作用。 设置复杂绑定时,正确识别源和目标是至关重要的。 TwoWay绑定并不是所有情况下的全部,特别是动画。
android Conflict with dependency 'com.android.support:support-annotations' in project ':app'.
如题所示 只是新建了一个项目就报这个错了。
问题 以后解决了如下:
这样就可以了。但是原因了我还是不知道。我也没有修改或者升级什么东西。。知道原因的大佬请告知一下。
转载自:https://blog.csdn.net/qq_33313551/article/details/80240332
Android 构建失败,使用 AS 2020.3.1 和 Compose 1.0.0 InstantiationError 或 NoClassDefFoundError: WrappedSimpleFunctionDescriptor
如何解决Android 构建失败,使用 AS 2020.3.1 和 Compose 1.0.0 InstantiationError 或 NoClassDefFoundError: WrappedSimpleFunctionDescriptor?
升级到新的 Android Studio 2020.3.1(稳定版)和 Compose 1.0.0(稳定版)。在构建我的分支时,根据我设置的 Kotlin 版本,我遇到了两个复杂问题之一。
常见的build.gradle:
baseDependencies = [
minSdkVersion : 26,compileSdkVersion : 30,buildToolsversion : "31.0.0"
]
gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
buildscript {
ext {
gms_version = "4.3.5"
agp_version = ''7.0.0''
ktlint_version = "10.0.0"
kotlin_version = "x.x.x"
detekt_version = "1.16.0"
versions_version = "0.36.0"
dagger_version = "2.37"
crashlytics_gradle_version = "2.5.2"
SceneForm_version = "1.17.1"
nav_version = "2.3.5"
compose_version = "1.0.0"
datastore_version = "1.0.0-beta01"
protobuf_version = "3.10.0"
}
repositories {
google()
mavenCentral()
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "com.android.tools.build:gradle:$agp_version"
classpath "com.google.gms:google-services:$gms_version"
classpath "org.jlleitschuh.gradle:ktlint-gradle:$ktlint_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "com.google.dagger:hilt-android-gradle-plugin:$dagger_version"
classpath "com.github.ben-manes:gradle-versions-plugin:$versions_version"
classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:$detekt_version"
classpath "com.google.firebase:firebase-crashlytics-gradle:$crashlytics_gradle_version"
classpath "com.google.ar.SceneForm:plugin:$SceneForm_version"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinoptions {
jvmTarget = JavaVersion.VERSION_11
useIR = true
}
Android Studio 当前 Kotlin 插件版本:203-1.5.21-release-328-AS7717.8
当 Kotlin 版本设置为 1.5.21 时,会生成以下堆栈跟踪:
java.lang.InstantiationError: org.jetbrains.kotlin.ir.util.TypeTranslator
at androidx.compose.compiler.plugins.kotlin.lower.AbstractComposeLowering.<init>(AbstractComposeLowering.kt:174)
at androidx.compose.compiler.plugins.kotlin.lower.ClassstabilityTransformer.<init>(ClassstabilityTransformer.kt:61)
at androidx.compose.compiler.plugins.kotlin.ComposeIrGenerationExtension.generate(ComposeIrGenerationExtension.kt:68)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.convertToIr$lambda-1(JvmIrCodegenFactory.kt:126)
at org.jetbrains.kotlin.psi2ir.Psi2IrTranslator.generateModuleFragment(Psi2IrTranslator.kt:89)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.convertToIr(JvmIrCodegenFactory.kt:146)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.convertToIr$default(JvmIrCodegenFactory.kt:64)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateModule(JvmIrCodegenFactory.kt:59)
at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:35)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.generate(KotlinToJVMBytecodeCompiler.kt:618)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:211)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:154)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:169)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:90)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runcompiler(IncrementalJvmCompilerRunner.kt:386)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runcompiler(IncrementalJvmCompilerRunner.kt:110)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:303)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl$rebuild(IncrementalCompilerRunner.kt:99)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:124)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:74)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:607)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:96)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1659)
at jdk.internal.reflect.GeneratedMethodAccessor108.invoke(UnkNown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
当使用 Koltin 版本 1.5.10 时,会生成此堆栈跟踪:
java.lang.NoClassDefFoundError: org/jetbrains/kotlin/ir/descriptors/WrappedSimpleFunctionDescriptor
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.buildFunction(LiveLiteralTransformer.kt:842)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.irLiveLiteralGetter(LiveLiteralTransformer.kt:933)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.visitConst(LiveLiteralTransformer.kt:426)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitConst(IrElementTransformerVoid.kt:138)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitConst(IrElementTransformerVoid.kt:24)
at org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl.accept(IrConstImpl.kt:33)
at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:33)
at org.jetbrains.kotlin.ir.expressions.IrExpressionBody.transformChildren(IrBody.kt:46)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitBody(IrElementTransformerVoid.kt:108)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitExpressionBody(IrElementTransformerVoid.kt:114)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitExpressionBody(IrElementTransformerVoid.kt:115)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitExpressionBody(IrElementTransformerVoid.kt:24)
at org.jetbrains.kotlin.ir.expressions.IrExpressionBody.accept(IrBody.kt:36)
at org.jetbrains.kotlin.ir.expressions.IrExpressionBody.transform(IrBody.kt:39)
at org.jetbrains.kotlin.ir.declarations.IrField.transformChildren(IrField.kt:42)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitDeclaration(IrElementTransformerVoid.kt:57)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitField(IrElementTransformerVoid.kt:81)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitField(IrElementTransformerVoid.kt:82)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitField(IrElementTransformerVoid.kt:24)
at org.jetbrains.kotlin.ir.declarations.IrField.accept(IrField.kt:35)
at org.jetbrains.kotlin.ir.IrElement$DefaultImpls.transform(IrElement.kt:32)
at org.jetbrains.kotlin.ir.IrElementBase.transform(IrElementBase.kt:19)
at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)
at org.jetbrains.kotlin.ir.declarations.IrClass.transformChildren(IrClass.kt:67)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitDeclaration(IrElementTransformerVoid.kt:57)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:66)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.access$visitClass$s1031542550(LiveLiteralTransformer.kt:158)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer$visitClass$1.invoke(LiveLiteralTransformer.kt:450)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer$visitClass$1.invoke(LiveLiteralTransformer.kt:158)
at androidx.compose.compiler.plugins.kotlin.lower.Durablekeyvisitor.siblings(Durablekeyvisitor.kt:117)
at androidx.compose.compiler.plugins.kotlin.lower.Durablekeyvisitor$siblings$1.invoke(Durablekeyvisitor.kt:131)
at androidx.compose.compiler.plugins.kotlin.lower.Durablekeyvisitor.enter(Durablekeyvisitor.kt:96)
at androidx.compose.compiler.plugins.kotlin.lower.Durablekeyvisitor.siblings(Durablekeyvisitor.kt:131)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.siblings(LiveLiteralTransformer.kt:192)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.visitClass(LiveLiteralTransformer.kt:449)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:67)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:24)
at org.jetbrains.kotlin.ir.declarations.IrClass.accept(IrClass.kt:56)
at org.jetbrains.kotlin.ir.IrElement$DefaultImpls.transform(IrElement.kt:32)
at org.jetbrains.kotlin.ir.IrElementBase.transform(IrElementBase.kt:19)
at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)
at org.jetbrains.kotlin.ir.declarations.IrClass.transformChildren(IrClass.kt:67)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitDeclaration(IrElementTransformerVoid.kt:57)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:66)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.access$visitClass$s1031542550(LiveLiteralTransformer.kt:158)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer$visitClass$1.invoke(LiveLiteralTransformer.kt:450)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer$visitClass$1.invoke(LiveLiteralTransformer.kt:158)
at androidx.compose.compiler.plugins.kotlin.lower.Durablekeyvisitor.siblings(Durablekeyvisitor.kt:117)
at androidx.compose.compiler.plugins.kotlin.lower.Durablekeyvisitor$siblings$1.invoke(Durablekeyvisitor.kt:131)
at androidx.compose.compiler.plugins.kotlin.lower.Durablekeyvisitor.enter(Durablekeyvisitor.kt:96)
at androidx.compose.compiler.plugins.kotlin.lower.Durablekeyvisitor.siblings(Durablekeyvisitor.kt:131)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.siblings(LiveLiteralTransformer.kt:192)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.visitClass(LiveLiteralTransformer.kt:449)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:67)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:24)
at org.jetbrains.kotlin.ir.declarations.IrClass.accept(IrClass.kt:56)
at org.jetbrains.kotlin.ir.IrElement$DefaultImpls.transform(IrElement.kt:32)
at org.jetbrains.kotlin.ir.IrElementBase.transform(IrElementBase.kt:19)
at org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl.transformChildren(IrFileImpl.kt:71)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitPackageFragment(IrElementTransformerVoid.kt:41)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitFile(IrElementTransformerVoid.kt:47)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.access$visitFile$s1031542550(LiveLiteralTransformer.kt:158)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer$visitFile$1.invoke(LiveLiteralTransformer.kt:496)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer$visitFile$1.invoke(LiveLiteralTransformer.kt:158)
at androidx.compose.compiler.plugins.kotlin.lower.Durablekeyvisitor.siblings(Durablekeyvisitor.kt:117)
at androidx.compose.compiler.plugins.kotlin.lower.Durablekeyvisitor.root(Durablekeyvisitor.kt:152)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.visitFile(LiveLiteralTransformer.kt:463)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitFile(IrElementTransformerVoid.kt:48)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitFile(IrElementTransformerVoid.kt:24)
at org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl.accept(IrFileImpl.kt:63)
at org.jetbrains.kotlin.ir.declarations.IrFile.transform(IrFile.kt:48)
at org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl.transformChildren(IrModuleFragmentImpl.kt:45)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoidKt.transformChildrenVoid(IrElementTransformerVoid.kt:330)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.lower(LiveLiteralTransformer.kt:169)
at androidx.compose.compiler.plugins.kotlin.ComposeIrGenerationExtension.generate(ComposeIrGenerationExtension.kt:80)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory$convertToIr$1.invoke(JvmIrCodegenFactory.kt:120)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory$convertToIr$1.invoke(JvmIrCodegenFactory.kt:116)
at org.jetbrains.kotlin.psi2ir.Psi2IrTranslator.generateModuleFragment(Psi2IrTranslator.kt:91)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.convertToIr(JvmIrCodegenFactory.kt:140)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.convertToIr$default(JvmIrCodegenFactory.kt:66)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateModule(JvmIrCodegenFactory.kt:61)
at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:35)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.generate(KotlinToJVMBytecodeCompiler.kt:592)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:212)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:155)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:169)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runcompiler(IncrementalJvmCompilerRunner.kt:386)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runcompiler(IncrementalJvmCompilerRunner.kt:110)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:303)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl$rebuild(IncrementalCompilerRunner.kt:99)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:124)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:74)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:607)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:96)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1659)
at jdk.internal.reflect.GeneratedMethodAccessor104.invoke(UnkNown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.classNotFoundException: org.jetbrains.kotlin.ir.descriptors.WrappedSimpleFunctionDescriptor
at java.base/java.net.urlclassloader.findClass(urlclassloader.java:471)
at java.base/java.lang.classLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.classLoader.loadClass(ClassLoader.java:522)
... 115 more
我也尝试回到 Kotlin 版本 1.4.32,结果如下:
org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering
File being compiled: /Users/pc15144/GitRepos/Neal-Android/libs/commonui/library/src/main/java/com/bose/mobile/commonui/ui/compose/CommonCheckBoxRow.kt
The root cause java.lang.NullPointerException was thrown at: org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.InlineClassAbi.getUnderlyingType(InlineClassAbi.kt:61)
at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:239)
at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException$default(CodegenUtil.kt:235)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(PhaseBuilders.kt:124)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(PhaseBuilders.kt:112)
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:94)
at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:30)
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:94)
at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.invoketoplevel(CompilerPhase.kt:41)
at org.jetbrains.kotlin.backend.jvm.JvmLower.lower(JvmLower.kt:407)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.doGenerateFilesInternal$backend_jvm(JvmIrCodegenFactory.kt:147)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateModule(JvmIrCodegenFactory.kt:120)
at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:35)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.generate(KotlinToJVMBytecodeCompiler.kt:595)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:211)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:154)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:169)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
我错过了什么魔法?
解决方法
Android Studio 当前 Kotlin 插件版本:203-1.5.21-release-328-AS7717.8
将其更改为 1.5.10。
android-Canvas中的java.lang.UnsupportedOperationException
我在应用程序中使用了自定义ImageView.但这表明
java.lang.UnsupportedOperationException
在代码canvas.clipPath(clipPath)中.
我不知道为什么会收到这个错误.它在某些手机上可以完美运行.
public class Gma_CustomImage2 extends ImageView {
public static float radius = 10.0f;
public Gma_CustomImage2(Context context) {
super(context);
}
public Gma_CustomImage2(Context context, AttributeSet attrs) {
super(context, attrs);
}
public Gma_CustomImage2(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
Path clipPath = new Path();
RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight()+13.0f);
clipPath.addRoundRect(rect, radius, radius, Path.Direction.CW);
canvas.clipPath(clipPath);
super.onDraw(canvas);
}
}
LogCat
08-08 12:04:47.963: E/AndroidRuntime(5710): FATAL EXCEPTION: main
08-08 12:04:47.963: E/AndroidRuntime(5710): java.lang.UnsupportedOperationException
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:408)
08-08 12:04:47.963: E/AndroidRuntime(5710): at com.example.meetap.Gma_CustomImage2.onDraw(Gma_CustomImage2.java:34)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.draw(View.java:10982)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.getdisplayList(View.java:10421)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:2597)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.getdisplayList(View.java:10384)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:2597)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.getdisplayList(View.java:10384)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:2597)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.getdisplayList(View.java:10384)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.drawChild(ViewGroup.java:2850)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.draw(View.java:10985)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.widget.FrameLayout.draw(FrameLayout.java:450)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.widget.ScrollView.draw(ScrollView.java:1524)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.getHardwareLayer(View.java:10220)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.drawChild(ViewGroup.java:2863)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
08-08 12:04:47.963: E/AndroidRuntime(5710): at com.example.meetap.Gma_CustomViewBehind.dispatchDraw(Gma_CustomViewBehind.java:121)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.getdisplayList(View.java:10419)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.drawChild(ViewGroup.java:2850)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.getdisplayList(View.java:10419)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:2597)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.getdisplayList(View.java:10384)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:2597)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.getdisplayList(View.java:10384)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:2597)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.View.getdisplayList(View.java:10384)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.HardwareRenderer$glrenderer.draw(HardwareRenderer.java:842)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewRootImpl.draw(ViewRootImpl.java:1935)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1659)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2467)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.os.Handler.dispatchMessage(Handler.java:99)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.os.Looper.loop(Looper.java:137)
08-08 12:04:47.963: E/AndroidRuntime(5710): at android.app.ActivityThread.main(ActivityThread.java:4424)
08-08 12:04:47.963: E/AndroidRuntime(5710): at java.lang.reflect.Method.invokeNative(Native Method)
08-08 12:04:47.963: E/AndroidRuntime(5710): at java.lang.reflect.Method.invoke(Method.java:511)
08-08 12:04:47.963: E/AndroidRuntime(5710): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-08 12:04:47.963: E/AndroidRuntime(5710): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-08 12:04:47.963: E/AndroidRuntime(5710): at dalvik.system.NativeStart.main(Native Method)
解决方法:
使用此代码:
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
Gma_CustomImage.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
android-NullPointerException在lockCanvas()
我正在为Android开发一个小游戏(测试),但我不了解使用SurfaceView制作好的Timer线程的逻辑.
我遇到了[SurfaceView对象] .getHolder().lockCanvas(null)的问题.问题在于lockCanvas返回的值无效(在这种情况下为null).
我无法捕获此异常,因为我…不能! :/
这是我的代码:
package game;
import game.logics.SceneGroup;
import game.scenes.TeamScene;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import android.view.WindowManager;
// Definição da Atividade
public class GameActivity extends Activity {
// Definição do Ambiente
public class GameSurface extends SurfaceView
implements SurfaceHolder.Callback {
public GameSurface(final Context context) {
super(context);
this.getHolder().addCallback(this);
this.setFocusable(true);
}
@Override
public void surfaceChanged(final SurfaceHolder arg0,
final int arg1, final int arg2, final int arg3) {}
@Override
public void surfaceCreated(final SurfaceHolder arg0) {
GameActivity.this.running = true;
}
@Override
public void surfaceDestroyed(final SurfaceHolder arg0) {
GameActivity.this.running = false;
}
public void update(final Canvas canvas) {
GameActivity.this.scenes.update(canvas);
}
}
class GaMetask extends TimerTask {
@Override
public void run() {
if(GameActivity.this.running == false) {
return;
}
final SurfaceHolder holder =
GameActivity.this.surface.getHolder();
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
canvas.drawColor(Color.BLACK);
synchronized(holder) {
GameActivity.this.surface.update(canvas);
}
}
finally {
if(canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
}
}
private GameSurface surface;
private SceneGroup scenes;
private Timer timer;
private TimerTask task;
private boolean running = false;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestwindowFeature(Window.FEATURE_NO_TITLE);
this.getwindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// ### SOLVE: PROBLEM START HERE ###
this.surface = new GameSurface(this);
this.scenes = new SceneGroup(this);
this.scenes.add(new TeamScene(this));
this.timer = new Timer();
this.task = new GaMetask();
// ### SOLVE: PROBLEM END HERE ###
// ### Invalid new instance of GameSurface ###
this.setContentView(new GameSurface(this));
}
@Override
public void onPause() {
super.onPause();
this.timer.cancel();
}
@Override
public void onResume() {
super.onResume();
this.timer.scheduleAtFixedrate(this.task, 0, 33);
}
}
我做对了吗?
我该如何解决我的代码?
解决方法:
您正在两次创建GameSurface.
曾经在这里:
this.surface = new GameSurface(this);
再次在这里:
this.setContentView(new GameSurface(this));
大概他们应该是同一个人吗?
今天的关于WPF绑定Canvas.Left / Canvas.Top到Point DependencyProperty,使用PointAnimation和wpf绑定对象的分享已经结束,谢谢您的关注,如果想了解更多关于android Conflict with dependency 'com.android.support:support-annotations' in project ':app'.、Android 构建失败,使用 AS 2020.3.1 和 Compose 1.0.0 InstantiationError 或 NoClassDefFoundError: WrappedSimpleFunctionDescriptor、android-Canvas中的java.lang.UnsupportedOperationException、android-NullPointerException在lockCanvas()的相关知识,请在本站进行查询。
本文标签: