I triying make a android app for learning but my buttons clickable only once. I can’t click second time. Here is my codes for button.
There is the xml codes:
JavaScript
x
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:width="200dp"
android:height="80dp"
android:shadowColor="@color/red"
android:text="@string/button"
android:textColor="@color/black"
android:textSize="20sp"
android:visibility="visible"
app:cornerRadius="100dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text"
app:rippleColor="@color/red"
app:strokeColor="@color/red"
tools:ignore="TextContrastCheck" />
And there is java codes:
JavaScript
buttonGenerate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
passwordText.setText(generate());
}
});
There is generate method:
JavaScript
private String generate () {
Random random = new Random();
int character;
while (password.length() < 16) {
character = random.nextInt(76);
password += characters[character];
}
return password;
There is variables:
JavaScript
private final String[] characters = {
"A" , "B" , "C" , "D" , "E" , "F" , "G" , "H",
"I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" ,
"U" , "V" , "W" , "X" , "Y" , "Z", "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h",
"i" , "j" , "k" , "l" , "m" , "n" , "o" , "p" , "q" , "r" , "s" , "t" ,"u" , "v" , "w" , "x" , "y" , "z", "0" , "1" , "2" , "3" , "4" , "5" , "6" ,
"7" , "8" , "9", "!" , "#" , "'" , "+" , "%" , "(" , ")" , "&" ,
"=" , "?" , "*" , "-" , "$" , "{" , "}" };
private String password = "";
Advertisement
Answer
After calling generate() the first time password.length() < 16
will always be false.
Put String password
inside generate():
JavaScript
private String generate () {
String password = "";
Random random = new Random();
int character;
while (password.length() < 16) {
character = random.nextInt(76);
password += characters[character];
}
return password;}