Android运行异常

Unable to instantiate activity ComponentInfo{com.example.musicplay/com.example.musicplay.LoginActivity}: java.lang.InstantiationException: java.lang.Classhas no zero argument constructor
出现上述问题该如何解决

参考GPT和自己的思路:这个问题通常出现在Android应用程序的启动过程中,其中一个Activity的实例创建失败。根据错误提示,该Activity com.example.musicplay.LoginActivity 的实例创建失败,原因是这个Activity没有无参数构造函数。解决这个问题的方法是给 LoginActivity 添加一个无参数构造函数,或者修改已有的任何构造函数确保没有参数。如果您已经有无参数的构造函数但仍然出现此错误,则可能存在其他错误,例如组件名称拼写错误、包名错误或其他依赖项错误。请检查您的代码和使用的库以获得更多帮助。

先看看是否有这个LoginActivity 类

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/739317
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Android 异常解析
  • 你还可以看下android参考手册中的 android MediaCasStateException MediaCas运行时异常的基类
  • 除此之外, 这篇博客: Android开发面试总结中的 线程创建和运行 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    第一种方式是继承Thead类重写run方法

    public class ThreadTest {
    
    	public static void main(String[] args) {
    		MyThread myThread = new MyThread();
    		myThread.start();
    	}
    
    	private static class MyThread extends Thread {
    		@Override
    		public void run() {
    			super.run();
    			System.out.print("MyThread run");
    		}
    	}
    }
    

    因为Java的类只能继承一个类,所以继承Thread类之后就不能继承其他类了,而且因为任务和代码没有分离,如果多个线程执行相同的任务时,需要多份任务代码。

    注意:调用了start方法后,线程正在等待着CPU为它分配执行时间,进入就绪状态,等到CPU分配执行时间后,线程才真正执行,进入正在运行状态。

    第二种方式是实现Runnable接口的run方法

    public class ThreadTestv {
    
    	public static void main(String[] args) {
    
    		MyRunnable myRunnable = new MyRunnable();
    		Thread thread = new Thread(myRunnable);
    		thread.start();
    	}
    
    	private static class MyRunnable implements Runnable {
    
    		@Override
    		public void run() {
    			System.out.print("MyRunnable run");
    		}
    	}
    }
    

    因为Java的类可以实现多个接口,所以这个类就可以继承自己需要的类了,而且任务和代码分离,如果多个线程执行相同的任务时,可以共用同一任务代码,如需对它们区分,可以添加参数进行区分。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^