【问题标题】:Password Generator Error (Android)密码生成器错误 (Android)
【发布时间】:2015-08-17 00:01:43
【问题描述】:

我不知道为什么我不能生成自定义密码。

public void GeneratePass(View view) {

    EditText TextField = (EditText)findViewById(R.id.DigitsField);
    int DigitsNum = Integer.parseInt(TextField.getText().toString());
    if (DigitsNum != 1){
        Random Pass = new Random();
        int num1 = Pass.nextInt(10);
        TextView PassText = (TextView) findViewById(R.id.PassText);
        PassText.setText(num1);
    }
}

我创建了这个文本字段(EditText),您可以在其中写下您希望密码的位数,我尝试输入

    EditText TextField = (EditText)findViewById(R.id.DigitsField);
    String Digits = TextField.getText().toString();
    int DigitsNum = Integer.parseInt(Num);

并更改 if(DigitsNum == 1)... 但是当我写数字时(我只编码 1)我尝试写 1 但它只是崩溃或停止工作。

【问题讨论】:

  • 用 textField 更好地替换 TextField。带有数字字段的数字字段。 PassText 与 passText。通关。带数字的数字。 DigitsNum 和digitsNum...所有这些都是错误
  • 你的代码现在做的是它只会生成一个从0到10的数字。它只是一个数字。
  • 从 0 到 9,但它不起作用。

标签: android android-studio passwords generator password-generator


【解决方案1】:

尝试这样的事情并根据您的需要进行修改:

Java 代码(在您的 onCreate 方法中添加此代码):

final TextView passText = (TextView) findViewById(R.id.passText);
final EditText digitsField = (EditText) findViewById(R.id.digitsField);
Button generatePassword = (Button) findViewById(R.id.generatePassword);

generatePassword.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        int passwordLength = Integer.parseInt(digitsField.getText().toString());
        String allowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        char[] allowedCharsArray = allowedChars.toCharArray();
        char[] chars = new char[passwordLength];
        Random random = new Random();

        for (int i = 0; i < passwordLength; i++) {
            chars[i] = allowedCharsArray[random.nextInt(allowedChars.length())];
        }

        passText.setText(chars, 0, passwordLength);
    }
});

XML 布局(使用当前布局编辑):

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Password"
        android:layout_gravity="center"
        android:id="@+id/passText" />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:id="@+id/digitsField" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Generate Password"
        android:layout_gravity="center"
        android:id="@+id/generatePassword" />

</LinearLayout>

【讨论】:

  • 谢谢,但它给了我一个错误,因为我不太擅长编程,所以我才刚刚开始,我试着让它工作,但我做不到。
  • 错误在哪里?你能告诉我吗?我只是现在不在电脑上,所以这是我的随机猜测。告诉我错误在哪里,我一定会尽力提供帮助。 :) 还要确保你修复了你的 xml 中的 id,正如我在你的问题中作为评论提到的那样。
  • chars[i] = allowedChars[random.nextInt(allowedChars.length())];错误出现在第一个 allowedChars 中。
  • @Pablo 很抱歉这个错误。我现在已经在我的电脑上测试了它,一切正常!尝试更新的代码,不要忘记将我的答案标记为正确,如果适合你,请投票。 :)
  • 感谢您付出的所有努力,但是...有一个错误,在最终 TextView passText = (TextView) findViewById(R.id.passText);但感谢所有的努力
猜你喜欢
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 2020-02-29
  • 2022-11-22
  • 2017-06-11
相关资源
最近更新 更多