Не получается сравнить два списка, один из которых получен через intent

167
16 декабря 2019, 19:20

Я пытаюсь сделать приложение, которое сможет симулировать регистрацию графического пароля и авторизацию по нему(на самом деле под каждой кнопкой просто лежит число). Проблема в том, когда я возвращаю зарегистрированный пароль из второй активности, я не могу его сравнить с паролем введенным пользователем в главной активности.

Я пытался сделать compose2 глобальной переменной, но тогда при передаче через intent происходит вылет приложения. Прошу сильно не минусовать, если оформил что-то не так. Если будет необходима еще какая-либо информация, постараюсь оперативно дополнить

public class MainActivity extends Activity {
    LinkedHashSet<Integer> inputTree = new LinkedHashSet<>();
    ArrayList<Integer> compose3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        //   ArrayList<Integer> compose2 =intent.getIntegerArrayListExtra("tree");
        ArrayList<Integer> compose2 = (ArrayList<Integer>) getIntent().getSerializableExtra("tree");
        setContentView(R.layout.activity_main);      
    }
    public void goRegistration(View view) {
        Intent intent = new Intent(MainActivity.this, registration.class);
        startActivity(intent);
        //setContentView(R.layout.activity_registration);
    }
    public void inputPassword(View view) {
        switch (view.getId()) {
            case R.id.button1:
                inputTree.add(1);
                break;
            case R.id.button2:
                inputTree.add(2);
                break;
            case R.id.button3:
                inputTree.add(3);
                break;
            case R.id.button4:
                inputTree.add(4);
                break;
            case R.id.button5:
                inputTree.add(5);
                break;
            case R.id.button6:
                inputTree.add(6);
                break;
            case R.id.button7:
                inputTree.add(7);
                break;
            case R.id.button8:
                inputTree.add(8);
                break;
            case R.id.button9:
                inputTree.add(9);
                break;
        }
    }
    public void entranceButton(View view) {
        compose3 = new ArrayList<>(inputTree);
       // ArrayList<Integer> compose3 = new ArrayList<>(inputTree);
        try {
            if (compose2.equals(compose3)) {
                setContentView(R.layout.activity_entrance);
            } else {
                Toast toast = Toast.makeText(this, "Неверный пароль!", Toast.LENGTH_LONG);
                toast.show();
            }
        } catch (Exception e) {
            Toast toast2 = Toast.makeText(this, "лол", Toast.LENGTH_LONG);
        }
    }
}

Второй класс, с помощью которого я задаю пароль

public class registration extends AppCompatActivity {
    LinkedHashSet<Integer> tree=new LinkedHashSet <>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        tree.clear();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_registration);
    }
    public void onLock(View view){
        switch (view.getId()) {
            case R.id.button2:
                tree.add(1);
                break;
            case R.id.button3:
                tree.add(2);
                break;
            case R.id.button4:
                tree.add(3);
                break;
            case R.id.button5:
                tree.add(4);
                break;
            case R.id.button6:
                tree.add(5);
                break;
            case R.id.button7:
                tree.add(6);
                break;
            case R.id.button8:
                tree.add(7);
                break;
            case R.id.button9:
                tree.add(8);
                break;
            case R.id.button10:
                tree.add(9);
                break;
        }
    }
    public void onSave(View view) {
        Integer[] compose1=tree.toArray(new Integer[0]);
        Intent intent=new Intent(registration.this,MainActivity.class);
        intent.putExtra("tree", compose1);
        startActivity(intent);
    }
}

Ошибка заключается в том, что я не могу передать compose2 в метод для кнопки сравнения и соответственно не могу их сравнить.

READ ALSO
Не понял асинхронность JavaScript

Не понял асинхронность JavaScript

Есть две асинхронные функции:

183
Проблемы кроссбразерности

Проблемы кроссбразерности

В Safari не работает, но работает в Google Chrome, OperaНе могу понять в чем проблема

149