2016-01-12 89 views
1

我找不到我的代码出错的地方。该应用程序正在运行;它不会抛出异常或崩溃。我必须错过一些东西,因为当我将字段留空时,它不会给我一个错误消息,并且当我输入适当的登录凭证时它不会登录我。我确定我错过了一些明显的东西,但是提前感谢您查看它。我的登录按钮不起作用

package me.paxana.alerta; 

    import android.app.Activity; 
    import android.app.AlertDialog; 
    import android.content.Intent; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.TextView; 

    import com.parse.LogInCallback; 
    import com.parse.ParseException; 
    import com.parse.ParseUser; 
    import com.parse.SignUpCallback; 

    import butterknife.Bind; 
    import butterknife.ButterKnife; 
    import butterknife.OnClick; 

    public class LoginActivity extends AppCompatActivity { 
     @Bind(R.id.usernameField) EditText mUsername; 
     @Bind(R.id.passwordField) EditText mPassword; 
     @Bind(R.id.loginButton) Button mLoginButton; 
     @Bind(R.id.signupButton) TextView mSignupButton; 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_login); 
      ButterKnife.bind(this); 

      mSignupButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(LoginActivity.this, SignupActivity.class); 
        startActivity(intent); 

        mLoginButton.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          String username = mUsername.getText().toString(); 
          String password = mPassword.getText().toString(); 

          username = username.trim(); 
          password = password.trim(); 

          if (username.isEmpty() || password.isEmpty()) { //if they leave a field blank give them an error 
           AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); 
           builder.setMessage(R.string.Login_Error_Message) 
             .setTitle(R.string.Login_Error_title) 
             .setPositiveButton(android.R.string.ok, null); 
             AlertDialog dialog = builder.create(); 
           dialog.show();} 
          else { //if every field is accounted for, log in. 
         ParseUser.logInInBackground(username, password, new LogInCallback() { 
          @Override 
          public void done(ParseUser user, ParseException e) { 

           if (e == null) { //if no errors return 
            Intent intent = new Intent(LoginActivity.this, MainActivity.class); // then we logged in, start the app! 
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
            startActivity(intent);} // success } 
           else { 
            AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); //something went wrong logging in 
            builder.setMessage(e.getMessage()) // get a meaningful error message from parse 
              .setTitle(R.string.Login_Error_title) 
              .setPositiveButton(android.R.string.ok, null); 
            AlertDialog dialog = builder.create(); 
            dialog.show(); 
           } 
          } 
         }); 
          } 
          } 
         }); 
       } 
      }); 
     } 
    } 
+1

为什么在按下注册按钮时为登录按钮设置onClickListener?检查你的代码流。 – GiantTree

回答

1

尝试移动,设置点击收听您mLoginButtonmSignupButtonOnClickListener以外的代码。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    ButterKnife.bind(this); 

    mSignupButton.setOnClickListener(new View.OnClickListener(){...}); 
    mLoginButton.setOnClickListener(new View.OnClickListener(){...}); 
    ... 
} 
+0

做到了。不知何故,我的错误甚至比我想象的更加渺小和愚蠢:-)感谢milliion –