setText для editText, расположенного в LoginActivity.java, из метода onAuthenticationSuceeded () в FingerprintHandler.java - PullRequest
0 голосов
/ 23 января 2019

setText для editText, расположенного в LoginActivity.java, из метода onAuthenticationSuceeded () в FingerprintHandler.java

LoginActivity.java связано с XML-файлом с именем Activity_login.xml и имеет имя пользователя и пароль editText. Когда отпечаток пальца пользователя распознан, мне нужно установить текст для имени пользователя и пароля, однако onAuthenticationSuceeded () находится в FingerprintHandler.java, который не подключен ни к какому XML-файлу.

Код ниже в FingerprintHandler.java не будет работать, очевидно, потому что editTexts имени пользователя и пароля явно не связаны со страницей FingerprintHandler.java за исключением

@Override
    public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
username.setText(loginPreferences.getString("username", ""));
password.setText(loginPreferences.getString("password", ""));
}

Единственная часть, где LoginActivity.java подключен к FingerprintHandler.java, через этот код в LoginActivity:

FingerprintManager fingerprintManager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE);
        FingerprintHandler fingerprintHandler = new FingerprintHandler(this);
        fingerprintHandler.startAuth(fingerprintManager, null);

Любое руководство приветствуется, спасибо.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

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

1) Сначала создайте интерфейс в FingerPrintHandler.java

public interface FingeprintAuthenticationListener {
void onAuthenticationSucceeded();
}

2) внедрите этот интерфейс в свою деятельность.

public class LoginActivity extends AppCompatActivity implements FingeprintAuthenticationListener

@override 
public void onAuthenticationSucceeded() {
username.setText(loginPreferences.getString("username", ""));
password.setText(loginPreferences.getString("password", ""));
}

3) передайте ссылку на интерфейс класса FingerPrintHandler.java

FingerprintHandler fingerprintHandler = new FingerprintHandler(this, this);

4) вКласс FingerPrintHandler.java сохраняет ссылку на интерфейс и вызывает метод интерфейса в методе onAuthenticationSucceeded.

private FingeprintAuthenticationListener listener;
public FingerprintHandler(Context context, FingeprintAuthenticationListener listener) {
this.context = context;
this.listener = listener;
}

, а в вашем методе onAuthenticationSucceeded вызовите метод интерфейса.

@Override
    public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
listener.onAuthenticationSucceeded();
}
0 голосов
/ 23 января 2019

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

...