2017-02-18 11 views
-2

ユーザーがテキストフィールドに入力せずにログインボタンを押せば、私の編集テキストにエラーを設定しようとしています。私はいくつかのコードを試したが、何も助けなかった。私がそれを走らせるたびにアプリケーションがクラッシュしていました。ログインボタンは、それがアクティブべきsetOnClickListenerを押したとき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(); 
         } 
        }); 
       } 

     }); 

     } 
    } 

です。 私は、テキストフィールドが空であるかどうかをチェックしたいので、もしそうなら、私はtextEditでsetErrorしたいです。そうでなければ、私はそれを続けたい。 私のコードが間違っているとはかなり確信しているので、私はあなたの助言者が必要です。

クラッシュログ

 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

をあなたのログを投稿猫、あなたの編集テキストはどこですか?このようなIDは、 '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

"return"ステートメントが追加されましたが、アプリケーションはまだクラッシュしています –

+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"); 
    } 
} 
関連する問題