2016-04-19 6 views
0

LoginFragmentというフラグメントがあります。このフラグメントを使用して、ユーザーはRegisterボタンをクリックして初めて登録できます。このボタンをクリックすると、RegisterFragmentという新しいフラグメントが開き、ユーザーが選択した場所に新しいユーザー名とパスワードが登録されます。私は、アプリを実行し、登録の下にあるフィールドを入力し、[OK]を選択すると、それは想定されているようにトーストに "Saved Info"と表示されます。しかし、私が登録したユーザー名とパスワードを使用してログインしようとすると、アプリケーションは情報を認識せず、ユーザー名が既に存在するかパスワードが正しくない場合にのみ表示する必要があります私の場合はそうではありません。1つのフラグメントのSharedPreferencesが別のフラグメントのログインアクティビティのデータを登録していません

私は2つの異なるフラグメントを扱っているので、SharedPreferencesはユーザー名とパスワードの値を保存しませんか?どんな助けもありがとう!

RegisterFragment.java

public class RegisterFragment extends Fragment { 

    Button register_btn; 
    EditText username_signup_ET, password_signup_ET; 

    private String KEY_UID = "uid"; 
    private String KEY_PASSWORD = "pwd"; 
    private final String PREFER_NAME = "Registry"; 
    private SharedPreferences sharedPreferences; 
    private SharedPreferences.Editor editor; 
    String username; 

    //LoginDataBaseAdapter loginDataBaseAdapter; 
    Context context; 
    public void myAlertDialog(){ 
    context = getActivity(); 
    } 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState){ 

     View v = inflater.inflate(R.layout.register_fragment_layout, container, false); 

     sharedPreferences = getActivity().getSharedPreferences("loginPrefs", Context.MODE_PRIVATE);; 
     editor = sharedPreferences.edit(); 


     username_signup_ET = (EditText)v.findViewById(R.id.username_signup_ET); 
     password_signup_ET = (EditText)v.findViewById(R.id.password_signup_ET); 

     register_btn = (Button)v.findViewById(R.id.register_btn); 
     register_btn.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View v) { 

      String userName = username_signup_ET.getText().toString(); 
      String password = password_signup_ET.getText().toString(); 

      if(userName.equals("")||password.equals("")) 
      { 
       Toast.makeText(getActivity(), "Please Enter Values in all Fields!", Toast.LENGTH_SHORT).show(); 
      } 
      else{ 
      register(); 
      launchLogin(); 
      } 
      } 
     }); 
     return v; 
    } 

    //launch login activity 
    public void launchLogin(){ 
     FragmentManager FM = getFragmentManager(); 
     FragmentTransaction FT = FM.beginTransaction(); 
     LoginFragment LG = new LoginFragment(); 
     FT.addToBackStack("LG"); 
     FT.replace(R.id.fragment_one_id, LG); 
     FT.commit(); 
    } 

    // register your account 
      private void register() { 
       // prefix the keys with the user name 
       editor.putString("userName" + "_" + KEY_UID, username_signup_ET.getText() 
         .toString()); 
       editor.putString("password" + "_" + KEY_PASSWORD, password_signup_ET.getText() 
         .toString()); 
       //editor.commit(); // commit the values 
       editor.apply(); 

       Toast.makeText(getActivity(), "Saved Info!", Toast.LENGTH_SHORT).show(); 

      }// end of register 

} 

LoginFragment.java

public class LoginFragment extends Fragment { 


    Button login_btn, register_btn; 
    EditText username_ET, password_ET; 

    private String KEY_UID = "uid"; 
    private String KEY_PASSWORD = "pwd"; 
    private final String PREFER_NAME = "Registry"; 
    private SharedPreferences sharedPreferences; 
    private SharedPreferences.Editor editor; 
    String username; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState){ 
     super.onCreateView(inflater, container, savedInstanceState); 

     View v = inflater.inflate(R.layout.login_fragment_layout, container, false); 

     sharedPreferences = getActivity().getSharedPreferences("loginPrefs", Context.MODE_PRIVATE); 
     editor = sharedPreferences.edit(); 

     username_ET = (EditText)v.findViewById(R.id.username_ET); 
     password_ET = (EditText)v.findViewById(R.id.password_ET); 
     login_btn = (Button)v.findViewById(R.id.login_btn); 
     register_btn = (Button)v.findViewById(R.id.register_btn); 


     login_btn.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View v) { 
       // initialize username 
       username = username_ET.getText().toString(); 

       boolean valid = isValid(); 
       if (valid) { 
        String text = getResources().getString(R.string.logging_in_str); 
        Toast.makeText(getActivity().getApplicationContext(), text, 
          Toast.LENGTH_SHORT).show(); 
        if (!userExists() | !(passwordCorrect())) { 
         text = getResources().getString(
           R.string.error_username_str); 
         Toast.makeText(getActivity().getApplicationContext(), text, 
           Toast.LENGTH_SHORT).show(); 
        } else { 
         Intent i = new Intent(getActivity(), DiaryActivity.class); 
         startActivity(i); 
        } 
       } 


       //sharedPreferences = getActivity().getSharedPreferences("loginPrefs", Context.MODE_PRIVATE); 

       //get username and password from EditText 
       String userName = username_ET.getText().toString(); 
       String password = password_ET.getText().toString(); 


       if(username_ET.length() > 0 && password_ET.length() > 0) { 
        String uName = null; 
        String uPassword = null; 



        if (sharedPreferences.contains(userName)) { 
         uName = sharedPreferences.getString("userName", ""); 

        } 

        if (sharedPreferences.contains(password)) { 
         uPassword = sharedPreferences.getString("password", ""); 

        } 

        //start new activity 
        if (userName.equals(uName) && password.equals(uPassword)) { 


         Toast.makeText(getActivity(), "You entered: " + uName, Toast.LENGTH_SHORT).show(); 
         Intent i = new Intent(getActivity(), DiaryActivity.class); 
         startActivity(i); 
        } 
       } 
       //String userName = sharedPreferences.getString("userName", ""); 
       //String pw = sharedPreferences.getString("password", ""); 

       //sharedPreferences.getString("uid", ""); 
       //sharedPreferences.getString("pwd", ""); 
      } 
     }); 

     register_btn.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View v) { 
       FragmentManager FM = getFragmentManager(); 
       FragmentTransaction FT = FM.beginTransaction(); 
       RegisterFragment RG = new RegisterFragment(); 
       FT.replace(R.id.register_fragment_id, RG); 
       FT.commit(); 
      } 
     }); 
     return v; 
    } 

    // getter for the user name 
    public String getUsername() { 
     String str = username_ET.getText().toString(); 
     return str;// returns the user name 
    }// end of getUsername() 

    private boolean passwordCorrect() { 

     // prefix the key with the user name 
     if (sharedPreferences.contains(username + "_" + KEY_UID)) { 
      String pwd = sharedPreferences.getString(username + "_" 
        + KEY_PASSWORD, ""); 
      if (pwd.equals(password_ET.getText().toString())) 
       return true; 
     } 
      return false; 

    } 
    // getter for the user name 

    private boolean userExists() { 

     // prefix the key with the user name 
     if (sharedPreferences.contains(username + "_" + KEY_UID)) { 
      String uID = sharedPreferences.getString(username + "_" + KEY_UID, 
        ""); 
      if (uID.equals(username_ET.getText().toString())) 
       return true; 
     } 

      return false; 

    }// end of userExists() 

    private boolean isValid() { 
     boolean idEmpty = false; 
     boolean passEmpty = false; 
     if ((username_ET.getText().toString().isEmpty())) { 
      idEmpty = true; 
      String text = getResources() 
        .getString(R.string.error_emptyUsername); 
      Toast.makeText(getActivity().getApplicationContext(), text, Toast.LENGTH_SHORT) 
        .show(); 
     } 
     if ((password_ET.getText().toString().isEmpty())) { 
      passEmpty = true; 
      String text = getResources() 
        .getString(R.string.error_emptyPassword); 
      Toast.makeText(getActivity().getApplicationContext(), text, Toast.LENGTH_SHORT) 
        .show(); 
     } 
     return !(idEmpty | passEmpty); 
    }// end of isValid() 

} 
+0

あなたのAndroidデバイスモニタでSPファイルを確認しましたか? –

+0

あなたは '' userName "+" _ "+ KEY_UID'と' 'userName" 'の間でキーをミックスしていますが、' KEY_PASSWORD' –

答えて

1

あなたはLoginFragment内のデータを取得するために異なる鍵を使用しています。つまり、 存在しない環境設定にアクセスしようとしています。

以下LoginFragmentのようにコードを変更します。同様にパスワードの

private boolean userExists() { 

    String uID = sharedPreferences.getString("userName" + "_" + KEY_UID, ""); 

    return (uID.equals(username_ET.getText().toString())) 

} 

変更を。

関連する問題