2015-08-09 3 views
0

Я работаю над приложением, которое требует регистрации активности. Проблема у меня есть, что всякий раз, когда я оставить более 2 EditTexts опустошить мое приложение аварии: это код, я использую для регистрации деятельности:андроид регистрация активность авария

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


public class Register extends AppCompatActivity implements View.OnClickListener{ 
EditText etName, etAge, etUsername, etPassword; 
Button bRegister; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register); 

    etName = (EditText) findViewById(R.id.etName); 
    etAge = (EditText) findViewById(R.id.etAge); 
    etUsername = (EditText) findViewById(R.id.etUsername); 
    etPassword = (EditText) findViewById(R.id.etPassword); 
    bRegister = (Button) findViewById(R.id.bRegister); 

    bRegister.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.bRegister: 
      AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(Register.this); 
      String name = etName.getText().toString(); 
      String username = etUsername.getText().toString(); 
      String password = etPassword.getText().toString(); 
      int age = Integer.parseInt(etAge.getText().toString()); 
      if(!(name.trim().length()>0)) 
      { 
       dialogBuilder.setMessage("Please enter your name"); 
       dialogBuilder.setPositiveButton("Ok", null); 
       dialogBuilder.show(); 
       break; 
      } 
      if(!(etAge.getText().toString().trim().length()>0) || age>120) 
      { 
       dialogBuilder.setMessage("Please enter your age"); 
       dialogBuilder.setPositiveButton("Ok", null); 
       dialogBuilder.show(); 
       break; 
      } 
      if(!(username.trim().length()>0)) 
      { 
       dialogBuilder.setMessage("Please enter a username"); 
       dialogBuilder.setPositiveButton("Ok", null); 
       dialogBuilder.show(); 
       break; 
      } 
      if(!(password.trim().length()>0)) 
      { 
       dialogBuilder.setMessage("Please enter a password"); 
       dialogBuilder.setPositiveButton("Ok", null); 
       dialogBuilder.show(); 
       break; 
      } 
      User user = new User(name, age, username, password); 
      registerUser(user); 
      break; 
    } 
} 



private void registerUser(User user) { 
    ServerRequests serverRequest = new ServerRequests(this); 
    serverRequest.storeUserDataInBackground(user, new GetUserCallback() { 
     @Override 
     public void done(User returnedUser) { 
      Intent loginIntent = new Intent(Register.this, LoginScreen.class); 
      startActivity(loginIntent); 
     } 
    }); 
} 

}

+0

Добавьте соответствующую трассировку стека, пожалуйста, –

+1

Попробуйте использовать «else if» после первого, если вы используете метод in.your. Кроме того, ваш код, похоже, много работает в потоке пользовательского интерфейса, тем самым запускает метод registerUser в AsyncTask – Want2bExpert

+0

«else if» работал, спасибо alt Want2bExpert, по какой-то причине я это понял, потому что я использовал break; Мне больше не понадобится, если. –

ответ

1

Может быть, это потому, что каждый Условный оператор в ваш метод вызывается, whuch означает, что DialogBuilder попытается показать диалоговое окно каждый раз ..

попробуйте использовать:

if(....) { 
    .... 
} 
else if(....){ 
    ..... 
} 
else { 
    ..... 
} 

FYI:

разрыв разрывает только из вмещающих switch, for, while или do-while конструкции.

Смежные вопросы