Android应用程序意外停止工作
我正在做一个战略游戏,但它总是崩溃 我用九个按钮玩这个游戏。按钮默认颜色为灰色,两名玩家可以玩游戏 第一个玩家可以选择三个按钮(红色),第二个玩家可以选择三个按钮(绿色) 然而,问题是当我触摸除六个按钮之外的另一个按钮(灰色)时 应用程序崩溃了,我不知道为什么。代码附在下面 所有按钮操作都调用列出的函数Android应用程序意外停止工作,android,Android,我正在做一个战略游戏,但它总是崩溃 我用九个按钮玩这个游戏。按钮默认颜色为灰色,两名玩家可以玩游戏 第一个玩家可以选择三个按钮(红色),第二个玩家可以选择三个按钮(绿色) 然而,问题是当我触摸除六个按钮之外的另一个按钮(灰色)时 应用程序崩溃了,我不知道为什么。代码附在下面 所有按钮操作都调用列出的函数check()和moves() 职能: void check(Button bn,int c) { if (plyr == 1 && plyr1 >0&am
check()
和moves()
职能:
void check(Button bn,int c)
{
if (plyr == 1 && plyr1 >0&&c==Color.LTGRAY)
{
bn.setBackgroundColor(Color.RED);
bn.setText("RED");
plyr1--;
plyr = 2;
t1.setBackgroundColor(Color.LTGRAY);
t2.setBackgroundColor(Color.GREEN);
}
else if (plyr == 2 && plyr2>0&&c==Color.LTGRAY)
{
bn.setBackgroundColor(Color.GREEN);
bn.setText("GREEN");
plyr2--;
plyr = 1;
t2.setBackgroundColor(Color.LTGRAY);
t1.setBackgroundColor(Color.RED);
}
else if (plyr1 == 0 && plyr2 == 0)
{
flag = 1;
}
}
void moves(Button bn)
{
ColorDrawable btnclr=(ColorDrawable)bn.getBackground();
int s=btnclr.getColor();
if(s==Color.RED)
{
Toast.makeText(getApplicationContext(),"Exception GREEN",Toast.LENGTH_LONG).show();
}
else if(s==Color.LTGRAY)
{
}
else
{
Toast.makeText(getApplicationContext(),"else",Toast.LENGTH_LONG).show();
}
}
int adjsnt(Button adjlbl, Button rem)
{
if(rem.getText()=="b2")
{
Toast.makeText(getApplicationContext(),"Exception",Toast.LENGTH_LONG).show();
return 1;}
return 0;
}
原木猫
java.lang.ClassCastException:android.graphics.drawable.PaintDrawable无法强制转换为android.graphics.drawable.ColorDrawable
位于com.solutions.techblaze.nera.nera_main.moves(nera_main.java:250)
位于com.solutions.techblaze.nera.nera_main$8.onClick(nera_main.java:171)
在android.view.view.performClick上(view.java:4856)
在android.view.view$PerformClick.run(view.java:19956)
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:211)
位于android.app.ActivityThread.main(ActivityThread.java:5389)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)上
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)上,日志显示PaintDrawable不能转换为ColorDrawable 当您执行
ColorDrawable btnclr=(ColorDrawable)bn.getBackground()时代码>假设getBackground的结果是可着色的。但在这种情况下,情况并非如此。这可能是因为您没有在这些视图上使用setBackgroundColor
设置颜色
您可以做的一件事是在强制转换之前,简单地检查getBackground
返回的对象是否是ColorDrawable
的实例:
if(bn.getBackground() instanceof ColorDrawable)
您可以做的另一件事是在运行时为所有视图设置颜色setBackgroundColor
将始终为您的视图设置一个ColorDrawable
。正如日志所述,不能将PaintDrawable强制转换为ColorDrawable
当您执行ColorDrawable btnclr=(ColorDrawable)bn.getBackground()时代码>假设getBackground的结果是可着色的。但在这种情况下,情况并非如此。这可能是因为您没有在这些视图上使用setBackgroundColor
设置颜色
您可以做的一件事是在强制转换之前,简单地检查getBackground
返回的对象是否是ColorDrawable
的实例:
if(bn.getBackground() instanceof ColorDrawable)
您可以做的另一件事是在运行时为所有视图设置颜色setBackgroundColor
将始终为您的视图设置一个ColorDrawable
。请发布logcat错误跟踪。请参阅:我假设t1或t2为空。然而,如果没有任何日志,这是很难理解的@PedroOliveira@Rohit5k2查看log-catPlease发布logcat错误跟踪。请参阅:我假设t1或t2为空。然而,如果没有任何日志,这是很难理解的@PedroOliveira@Rohit5k2听着,没问题,朋友。记住,如果答案解决了你的问题,就把它标记为正确答案;如果答案对你有帮助,就投赞成票。祝你今天愉快:)没问题,朋友。记住,如果答案解决了你的问题,就把它标记为正确答案;如果答案对你有帮助,就投赞成票。祝你今天愉快:)