2013-07-31 71 views
1

我正在處理具有用戶名和密碼的活動。我用AlertDialog.Builder其他部分顯示「密碼錯誤或用戶名」的消息。我不是它只是使用用戶名和密碼字符串EDITTEXT字段的值與比較測試目的的任何數據庫連接,在如果條件,如果比賽需要用戶到一個新的網名「NewMenu」。我的問題是,登錄活動開始(應用程序運行)的時候,它首先顯示的所有消息,那就是其他的一部分,我想將此消息提交按鈕被點擊後和密碼或用戶名錯了。以下是代碼Android「錯誤的密碼或用戶名」消息框顯示錯誤

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

dlgAlert.create()。show();應該在setPositiveButton之後。在編輯之後,請回復您遇到的問題 – pvn

回答

3

您的算法不正常。當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 
      } 
     } 
    }); 
} 
0

您應該在click事件中編寫此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")); 
     } 
    } 
}); 

} 

你不需要檢查用戶名n傳入oncreate方法。

希望它有助於!

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) { 

           } 
          }); 
       } 
      } 
     }); 

    } 

} 
0

你應該在onClick方法中有你的if/else條件。這將確保它只在按鈕被點擊後執行。

0

您的警報對話框代碼將進入註冊按鈕的onclick