我正在开发一个包含用户名和密码的活动。我使用 else 部分中的 AlertDialog.Builder 来显示“密码或用户名错误”的消息。我没有将它连接到任何数据库仅用于测试目的,使用密码和用户名字符串来比较editText字段的值,在 if 条件下,如果匹配则将用户带到新屏幕名称“NewMenu”。我的问题是,当登录活动开始(应用程序运行)时,它首先显示消息,即 else 部分,我想在单击提交按钮后显示此消息密码或用户名错误。这是代码
public class Login extends Activity{
private String pass=new String();
private String nam=new String();
private Button log;
private View textreg;
private EditText text1;
private EditText text2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
textreg=(TextView) findViewById(R.id.textRegister);
log=(Button) findViewById(R.id.btnsubmit);
text1=(EditText) findViewById(R.id.txtuname);
text2=(EditText) findViewById(R.id.txtpassword);
//IF NOT REGISTERED USERS//
////A textview when clicked takes user to registeration page/////
textreg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent("com.DRMS.Register"));
}
});
// //
// IF PASSWORD AND USERNAME CORRECT, GOTO NewMenu Activity //
// //
pass="12345";
nam="12345";
if(text1.getText().toString().equals(nam) && text2.getText().toString().equals(pass) ){
log.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent("com.DRMS.NewMenu"));
}
});
}
else{
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this);
dlgAlert.setMessage("wrong password or username");
dlgAlert.setTitle("Error Message...");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create().show();
dlgAlert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
}
}
}
答案 0 :(得分:4)
您的算法不正常。创建Activity时会调用onCreate(),因此它会在每次创建时检查用户名和密码。由于您从未设置文本字段,因此在第一次启动时它们的值永远不会正常,因此您始终在第一次启动时显示错误对话框。你应该做这样的事情:
protected void onCreate(Bundle savedInstanceState) {
// 1. Call super() and init fields
String pass="12345";
String nam="12345";
// 2. Set the onClickListener
textreg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent("com.DRMS.Register"));
}
});
// 3. Set the onClickListener for the Login button
log.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// 4. Check if fields are null
if(text1.getText() != null && text2.getText() != null) {
// 4.a check if username and password are OK
if(text1.getText().toString().equals(nam) &&
text2.getText().toString().equals(pass) )
{
// Not null and OK, launch the activity
startActivity(new Intent("com.DRMS.NewMenu"));
} else {
// Username or password false, display and an error
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this);
dlgAlert.setMessage("wrong password or username");
dlgAlert.setTitle("Error Message...");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create().show();
dlgAlert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
}
} else {
// The fields are not filled.
// Display an error message like "Please enter username/password
}
}
});
}
答案 1 :(得分:0)
您应该在点击事件中编写此alertview代码。
log.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view)
{
if(text1.getText().toString().equals(nam) && text2.getText().toString().equals(pass) )
{
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this);
dlgAlert.setMessage("wrong password or username");
dlgAlert.setTitle("Error Message...");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create().show();
dlgAlert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
}
else
{
startActivity(new Intent("com.DRMS.NewMenu"));
}
}
});
}
你不需要在oncreate方法中检查用户名n传递。
希望它能帮助!!
答案 2 :(得分:0)
public class Second extends Activity {
private String pass = new String();
private String nam = new String();
private Button log;
private View textreg;
private EditText text1;
private EditText text2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
textreg = (TextView) findViewById(R.id.textRegister);
log = (Button) findViewById(R.id.btnsubmit);
text1 = (EditText) findViewById(R.id.txtuname);
text2 = (EditText) findViewById(R.id.txtpassword);
// IF NOT REGISTERED USERS//
// //A textview when clicked takes user to registeration page/////
textreg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent("com.DRMS.Register"));
}
});
// //
// IF PASSWORD AND USERNAME CORRECT, GOTO NewMenu Activity //
// //
pass = "12345";
nam = "12345";
log.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (text1.getText().toString().equals(nam)
&& text2.getText().toString().equals(pass)) {
startActivity(new Intent("com.DRMS.NewMenu"));
} else {
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(
getApplicationContext());
dlgAlert.setMessage("wrong password or username");
dlgAlert.setTitle("Error Message...");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create().show();
dlgAlert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
}
});
}
}
});
}
}
答案 3 :(得分:0)
您应该在onClick方法中包含if / else条件。这将确保仅在单击按钮后执行。
答案 4 :(得分:0)
您的警告对话框代码将显示注册按钮的