2017-02-18 78 views
-2

即時通訊嘗試在我的編輯文本上設置錯誤,如果用戶忘記登錄按鈕而不填寫文本字段。我嘗試了幾個代碼,但沒有任何幫助。每次運行應用程序都會崩潰。EditText設置錯誤

此這是代碼

public class LoginFragment extends Fragment { 

private ProgressDialog progressDialog; 
private FirebaseAuth firebaseAuth; 
EditText email,password; 
Button login; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.activity_login_fragment, container, false); 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    firebaseAuth = firebaseAuth.getInstance(); 

    progressDialog = new ProgressDialog(getActivity()); 

    login = (Button)getActivity().findViewById(R.id.loginBtn); 
    email = (EditText)getActivity().findViewById(R.id.regEmailEt); 
    password = (EditText)getActivity().findViewById(R.id.regPasswordEt); 


    login.setOnClickListener(new View.OnClickListener() { 
     String email1; 
     String password1; 
      @Override 
      public void onClick(View v) { 
       if(email.getText().length() == 0){ 
        email.setError("Please enter your email"); 
       } 
       if(password.getText().length() == 0){ 
        password.setError("Please enter your password"); 
       } 

        email1 = email.getText().toString(); 
        password1 = password.getText().toString(); 

       progressDialog.setMessage("Processing..."); 
       progressDialog.show(); 


        FirebaseAuth.getInstance().createUserWithEmailAndPassword(email1, password1) 
          .addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
           @Override 
           public void onComplete(Task<AuthResult> task) { 
            if (task.isSuccessful()) { 
             startActivity(new Intent(getActivity(), MainActivity.class)); 
             progressDialog.dismiss(); 
            } 
           } 
          }).addOnFailureListener(new OnFailureListener() { 
         @Override 
         public void onFailure(Exception e) { 
          Toast.makeText(getActivity(), "Error:" + e.getMessage(), Toast.LENGTH_LONG).show(); 
          progressDialog.dismiss(); 
         } 
        }); 
       } 

     }); 

     } 
    } 

當登錄按鈕按下它應該活性的setOnClickListener。 那裏我想檢查文本字段是否爲空,如果他們是這樣我想在textEdit中設置錯誤。否則,我希望它繼續。 我很確定我的代碼是錯誤的,所以我需要你的建議傢伙。

崩潰日誌

 02-18 19:32:46.012 11162-11162/? E/AndroidRuntime: FATAL EXCEPTION: main 
               Process: com.world.bolandian.whereareyou, PID: 11162 
               java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
                at com.world.bolandian.whereareyou.LoginFragment$1.onClick(LoginFragment.java:52) 
                at android.view.View.performClick(View.java:5207) 
                at android.view.View$PerformClick.run(View.java:21177) 
                at android.os.Handler.handleCallback(Handler.java:739) 
                at android.os.Handler.dispatchMessage(Handler.java:95) 
                at android.os.Looper.loop(Looper.java:148) 
                at android.app.ActivityThread.main(ActivityThread.java:5441) 
                at java.lang.reflect.Method.invoke(Native Method) 
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) 

線52 線52是 - >如果(email.getText()長度()== 0)

+0

發表您的日誌貓,你的編輯文本在哪裏,我從來沒有見過ome在片段'login =(Button)getActivity()。findViewById(R.id.loginBtn);'找到所有按鈕所在的位置。在活動?或片段?我們必須使用'onViewCreated()'方法來查找分片中的ID – Redman

+0

該按鈕被放置在片段中 –

+0

我已經發布了日誌貓 –

回答

0
String email1; 
    String password1; 
     @Override 
     public void onClick(View v) { 
      if(email.getText().length() == 0){ 
       email.setError("Please enter your email"); 
      } 
      if(password.getText().length() == 0){ 
       password.setError("Please enter your password"); 
      } 

我將不得不實現了一個.toString並把它放在一個單獨的方法中,讓你的onClick調用該方法。

我有它的工作,所以我知道這是可行的。

0

你應該檢查像空條件:

if (editText.getText().toString().trim().length() = 0) { 
    //editText is Empty 
    editText.setError("Your message"); 
    return; //add this so rest of the code will not execute 
} 

這裏是另一種方式:

EditText etName = (EditText) findViewById(R.id.etname); 
String strName = etName.getText().toString(); 

if(TextUtils.isEmpty(strName)) { 
    etName.setError("Your message"); 
    return; 
} 

你也應該改變你onCreatView()到:

View view; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.activity_login_fragment, container, false); 
    login = (Button)view.findViewById(R.id.loginBtn); 
    email = (EditText)view.findViewById(R.id.regEmailEt); 
    password = (EditText)view.findViewById(R.id.regPasswordEt); 

    return view; 
} 
+0

我已經添加了「返回」語句,並且應用程序仍然在崩潰後崩潰 –

+0

日誌... – rafsanahmad007

+0

我已經發布了崩潰日誌 –

0
@Override 
public void onClick(View v) { 
    String email, password; 
    email = emailfield.getText().toString(); 
    password = passfield.getText().toString(); 

    if(!(email.isEmpty())) { 
     if(!(password.isEmpty())) { 

      //run your process here 

     } else { 
      passfield.setError("Password Field Empty"); 
     } 
    } else { 
     emailfield.setError("Email Empty"); 
    } 
}