Я хочу найти строку ввода в ArrayList, созданном с общими настройками

 public void onClick(View view){

    if (view.getId()==R.id.loginId){

        String usr= number.getText().toString();
        String pwd= passWord.getText().toString();
        boolean containsUsr = newUserIds.contains(usr);

        if (containsUsr==true)
   {
            int index = newUserIds.indexOf(usr);

            if (pwd.equals(newPws.get(index).toString()))
      {
        //Toast.makeText(this,"Logging in",Toast.LENGTH_SHORT).show();
        Intent loginActivityIntent= new Intent(getApplicationContext(),GeoWorker.class);
        startActivity(loginActivityIntent);
       }
        else
        Toast.makeText(this,"Invalid Password",Toast.LENGTH_SHORT).show();
    }
        else
            Toast.makeText(this,"Invalid Phone Number",Toast.LENGTH_SHORT).show();
    }

В случае неверного номера телефона выполняется инструкция else. но не может проверить пароль. Приложение закрывается после ввода пароля. выводится сообщение: Приложение перестало работать. В методе OnCreate:

SharedPreferences sharedPreferences=this.getSharedPreferences("com.example.monica.miniprojectdemo", Context.MODE_PRIVATE);

    userIds= new ArrayList<String>();
    userIds.add("1234567890");
    userIds.add("9876543210");
    userIds.add("8822446688");
    userIds.add("0504030201");
    userIds.add("519121318");
    userIds.add("900000249");

    pws = new ArrayList<String>();
    pws.add("0000");
    pws.add("1111");
    pws.add("2222");
    pws.add("3333");
    pws.add("4444");
    pws.add("5555");
    try {
        sharedPreferences.edit().putString("userName",ObjectSerializer.serialize(userIds)).apply();
        sharedPreferences.edit().putString("pass",ObjectSerializer.serialize(pws)).apply();
    }catch (Exception e){
        e.printStackTrace();
    }

    newUserIds = new ArrayList<String>();
    newPws= new ArrayList<String>();
    try {
        newUserIds = (ArrayList<String>)ObjectSerializer.deserialize(sharedPreferences.getString("userName", ObjectSerializer.serialize(new ArrayList<String>())));
        newPws = (ArrayList<String>) ObjectSerializer.deserialize(sharedPreferences.getString("password", ObjectSerializer.serialize(new ArrayList<String>())));
    }catch (Exception e){
        e.printStackTrace();
    }

Это мой школьный проект. У меня очень мало времени.

пожалуйста, предоставьте трассировку стека ошибок с этим

PushpikaWan 26.10.2018 18:29

Привет, Моника, добро пожаловать в StackOverflow! Не могли бы вы предоставить Минимальный, полный и проверяемый пример, чтобы мы могли вам помочь?

Edric 26.10.2018 18:30

Вы сохраняете пароли с помощью putString("pass"..., но десериализуете с помощью getString("password"....

Sergey Glotov 26.10.2018 19:06

Большое спасибо @SergeyGlotov. Именно здесь я ошибся.

Monica Devireddy 26.10.2018 20:10

Спасибо за ответ @Lucefer

Monica Devireddy 26.10.2018 20:13

Спасибо за ответ @Edric

Monica Devireddy 26.10.2018 20:13
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
28
0

Другие вопросы по теме