微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android studio 错误 E/AndroidRuntime: FATAL EXCEPTION: main

如何解决android studio 错误 E/AndroidRuntime: FATAL EXCEPTION: main

This a error
 E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.loginappaplication,PID: 20994
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.loginappaplication/com.example.loginappaplication.MainActivity}: java.lang.InstantiationException: java.lang.class<com.example.loginappaplication.MainActivity> has no zero argument constructor
        at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3449)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7948)
        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:1075)
     Caused by: java.lang.InstantiationException: java.lang.class<com.example.loginappaplication.MainActivity> has no zero argument constructor
        at java.lang.class.newInstance(Native Method)
        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
        at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1251)
        at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3437)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:7948) 
        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:1075) 

公共类 MainActivity 扩展 AppCompatActivity {

private EditText eName;
private EditText ePassword;
private Button eLogin;
private TextView eAttemptsInfo;

private String Username = "Azahracaca";
private String Password = "Caca12345";

boolean isvalid = false;
private int counter = 3;

public MainActivity(Button eLogin) {
    this.eLogin = eLogin;
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    eName = findViewById(R.id.IdName);
    ePassword = findViewById(R.id.etPassword);
    eAttemptsInfo = findViewById(R.id.tvAttemptsInfo);

    eLogin.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String inputName = eName.getText().toString();
            String inputPassword = ePassword.getText().toString();

            if (inputName.isEmpty() || inputPassword.isEmpty())
            {
                Toast.makeText(MainActivity.this,"Pastikan Semuanya Benar !",Toast.LENGTH_SHORT).show();
            }else{

                isvalid = valited(inputName,inputPassword);

                if(!isvalid){
                    counter--;
                    Toast.makeText(MainActivity.this,"Salah Memasukkan Data !",Toast.LENGTH_SHORT).show();

                    eAttemptsInfo.setText("Jumlah Login Tersisa : 3 Kali" + counter);

                    if(counter == 0){
                        eLogin.setEnabled(false);
                    }
                }else {
                    Toast.makeText(MainActivity.this,"Login Sukses !",Toast.LENGTH_SHORT).show(); //ke menu selanjutnya
                    Intent intent = new Intent(MainActivity.this,HomePage.class);
                    startActivity(intent);
                }
            }

        }
    });
}
private boolean valited(String name,String password){
    if(name.equals(Username) && password.equals(Password)){
        return true;
    }
    return  false;
}

}

解决方法

public MainActivity(Button eLogin) {
    this.eLogin = eLogin;
}

将此构造函数设为空,并使用 findViewById 初始化 eLogin 按钮,就像您为 eName 所做的那样。 您应该在 onCreate() 中/之后初始化所有视图。无法在类构造函数中初始化视图。

,

为什么要传递 Param 构造函数 Activity?

编辑:

public class MainActivity extends AppcompatActivity

Button button = findViewById(R.id....)
,

结构应该是这样的

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?