Как вы можете переключать данные с активности, которая появляется только один раз, на другую, которая всегда появляется, вы регистрируетесь один раз, и вам нужно только войти в систему - PullRequest
0 голосов
/ 10 января 2020

HActivity. java

    pass1 = (EditText) findViewById(R.id.edt1);
    pass1c = (EditText) findViewById(R.id.edt2);
    confirm = (TextView) findViewById(R.id.tv1);

    SharedPreferences pref = getSharedPreferences("Apref", Context.MODE_PRIVATE);
    if(pref.getBoolean("act_ex", false)){
        String passs11 = pass1.getText().toString();
        Intent intent = new Intent(this, LogInAct.class);
        intent.putExtra("PASSWW", passs11);
        startActivity(intent);
        finish();
    } else {
        SharedPreferences.Editor ed = pref.edit();
        ed.putBoolean("act_ex", true);
        ed.commit();
    }

// Используется java в Android Studio, пароль передается при первом открытии приложения, но при повторном запуске - сказать неправильный пароль (как я хотел), даже если вы введете правильный пароль (тот, который вы зарегистрировали), как я могу сохранить его где-нибудь или что-то сделать с ним?

LogInAct. java

        tv2 = (TextView) findViewById(R.id.tv2);
        edt3 = (EditText) findViewById(R.id.edt3);

        Button loginbtn = (Button) findViewById(R.id.loginbtn);
        loginbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                logpass = edt3.getText().toString();
                passs1 = getIntent().getExtras().getString("PASSW");
                passs11 = getIntent().getExtras().getString("PASSWW");
            if (logpass.equals(passs1) && logpass.equals(passs11)) {
                Intent intent = new Intent(getApplicationContext(), Photos.class);
                startActivity(intent);
            } else {
                tv2.setText("wrong password");
            }


            }
        });

1 Ответ

0 голосов
/ 10 января 2020

Так что мне кажется, что на экране «регистрации» вы записываете имя пользователя и пароль, а затем передаете их через экран входа в систему? Это прекрасно работает в одном случае, но не сохраняется.

Трудно сказать только по коду, но как вы выводите пользователя на экран входа в систему при следующем открытии приложения? Это просто переход на этот экран при запуске?

Данные, переданные в намерениях, не сохраняются между сеансами. Это наиболее полезно при передаче данных с одного экрана на другой только для этого сеанса.

Может использоваться, если у вас есть экран списка, а на следующем экране - экран подробностей. Например, вы хотите передать идентификатор элемента, на который они нажали, чтобы вы могли загрузить данные на этом экране. Но нет никакой причины хранить его, если они закрыли приложение и открыли его снова.

Чтобы сохранить данные между сеансами, вы хотите хранить их и извлекать из более постоянного хранилища. В идеале вы получите какую-то систему баз данных. Но чтобы ответить на то, что вы пытаетесь сделать, используйте общие настройки для хранения и извлечения пароля.

Регистрация:

SharedPreferences pref = getSharedPreferences("Apref", Context.MODE_PRIVATE);
Editor editor = pref.edit();
editor.putString("username", username);
editor.putString("password", password");
editor.apply();

Логин:

SharedPreferences pref = getSharedPreferences("Apref", Context.MODE_PRIVATE);
passs1 = pref.getString("username");

Опять же, это определенно не очень хороший способ хранения учетных данных пользователя, но он отвечает на ваш вопрос о постоянстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...