package com.example.photodiary; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //设置密码 EditText password = findViewById(R.id.edit_view_1); String inputPassword = password.getText().toString(); String correctPassword = "20230523";//正确的密码 Button button = findViewById(R.id.button_1); Intent intent = new Intent(this,Diary.class); button.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ if(inputPassword.equals(correctPassword)){ startActivity(intent);//密码正确,跳转页面 }else { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setMessage("密码错误!");//密码错误,弹出窗口提示 builder.create().show(); } } } }
时间: 2023-12-03 20:46:42 浏览: 103
my PhotoDiary:一个Web应用程序,用于发布,排序和评论您的图片。-开源
在你的代码中,你在onCreate方法之外获取了密码输入框和按钮,并尝试在onCreate方法中设置它们的监听器。这样做会导致NullPointerException异常,因为在onCreate方法之外,布局文件还没有被加载,所以你不能访问布局文件中的视图对象。
正确的做法是在onCreate方法中获取密码输入框和按钮,并为按钮设置监听器。代码应该像这样:
```java
public class MainActivity extends AppCompatActivity {
EditText password;
Button button;
Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取密码输入框和按钮
password = findViewById(R.id.edit_view_1);
button = findViewById(R.id.button_1);
// 设置正确的密码和跳转页面的Intent
String correctPassword = "20230523";
intent = new Intent(this, Diary.class);
// 为按钮设置监听器
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String inputPassword = password.getText().toString();
if (inputPassword.equals(correctPassword)) {
startActivity(intent); // 密码正确,跳转页面
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("密码错误!"); // 密码错误,弹出窗口提示
builder.create().show();
}
}
});
}
}
```
请注意,在按钮的监听器中获取密码输入框的文本,以确保您在单击按钮时获得最新的输入。
阅读全文