[英]My app is crashing when I call my function by pressing a button
I am trying to make a simple gallery app.我正在尝试制作一个简单的画廊应用程序。 When I try this code:
当我尝试这段代码时:
public void previousTap(View view){
ImageView img = (ImageView) view;
if (img.getTag() == "img_one") {
img.setImageResource(R.drawable.img_five);
img.setTag("img_five");
} else if (img.getTag() == "img_two") {
img.setImageResource(R.drawable.img_one);
img.setTag("img_one");
} else if (img.getTag() == "img_three") {
img.setImageResource(R.drawable.img_two);
img.setTag("img_two");
} else if (img.getTag() == "img_four") {
img.setImageResource(R.drawable.img_three);
img.setTag("img_three");
} else if (img.getTag() == "img_five") {
img.setImageResource(R.drawable.img_four);
img.setTag("img_four");
}
}
When I run my project and install the app and click on the previous button, my app crashes.当我运行我的项目并安装应用程序并单击上一个按钮时,我的应用程序崩溃了。 Why?
为什么? Also, is there any way to get the tag of an imageview in activity_main.xml rather than typing "ImageView img = (ImageView) view;"(Only if it is wrong)?
另外,有什么方法可以在 activity_main.xml 中获取 imageview 的标签,而不是输入“ImageView img = (ImageView) view;”(仅在错误的情况下)?
The error I get:我得到的错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.wali.photoframegallery, PID: 6166
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
at android.view.View.performClick(View.java:6603)
at android.view.View.performClickInternal(View.java:6576)
at android.view.View.access$3100(View.java:780)
at android.view.View$PerformClick.run(View.java:26090)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:235)
at android.app.ActivityThread.main(ActivityThread.java:6760)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:6603)
at android.view.View.performClickInternal(View.java:6576)
at android.view.View.access$3100(View.java:780)
at android.view.View$PerformClick.run(View.java:26090)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:235)
at android.app.ActivityThread.main(ActivityThread.java:6760)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
Caused by: java.lang.ClassCastException: androidx.appcompat.widget.AppCompatButton cannot be cast to android.widget.ImageView
at com.wali.photoframegallery.MainActivity.nextTap(MainActivity.java:32)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:6603)
at android.view.View.performClickInternal(View.java:6576)
at android.view.View.access$3100(View.java:780)
at android.view.View$PerformClick.run(View.java:26090)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:235)
at android.app.ActivityThread.main(ActivityThread.java:6760)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
EDIT: I tried changing this:编辑:我试着改变这个:
ImageView img = (ImageView) view;
To this:对此:
View img = (View) view;
It gave me no errors, but there is no more functionality.它没有给我任何错误,但没有更多功能。 What's wrong now?
现在怎么了?
You can see your problem in next line: Caused by: java.lang.ClassCastException: androidx.appcompat.widget.AppCompatButton cannot be cast to android.widget.ImageView
of your stack trace.您可以在下一行看到您的问题
Caused by: java.lang.ClassCastException: androidx.appcompat.widget.AppCompatButton cannot be cast to android.widget.ImageView
You can try to cast view in AppCompatButton, or change AppCompatButton to ImageView in your layout您可以尝试在 AppCompatButton 中投射视图,或在布局中将 AppCompatButton 更改为 ImageView
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.