Android 应用锁

Android App Lock

我正在尝试为我的应用程序应用锁定屏幕。

我认为流程是如果密码不正确则转到页面 A,如果密码正确则转到页面 B。

我写过这个

int PIN = R.id.Txt_password;
int pass = 4444;
if (PIN == pass) {


    //Selecting the button which is to be pressed
    Button Btn_Submit = (Button) findViewById(R.id.Btn_Submit);
    //Creates a listener for the button to react when it is pressed
    Btn_Submit.setOnClickListener(new View.OnClickListener() {
        //Gives the button instructions when it is pressed
        @Override
        public void onClick(View view) {
            Intent startIntent = new Intent(getApplicationContext(),
                    Control_Screen.class);
            startActivity(startIntent);

        }
    });
} else {
    //Selecting the button which is to be pressed
    Button Btn_Submit = (Button) findViewById(R.id.Btn_Submit);
    //Creates a listener for the button to react when it is pressed
    Btn_Submit.setOnClickListener(new View.OnClickListener() {
        //Gives the button instructions when it is pressed
        @Override
        public void onClick(View view) {
            Intent startIntent = new Intent(getApplicationContext(),
                    Password.class);
            startActivity(startIntent);
        }
    });
}

失败了。

这是 Txt_password

的代码
 <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="numberPassword"
        android:ems="10"
        android:id="@+id/Txt_password"
        android:layout_below="@+id/Lbl_EnterPassword"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="4444" />

我认为密码是 4444,它是硬编码的,但我觉得情况并非如此,而且存在问题。

我该怎么做才能做到这一点?

也许有办法将用户在密码字段中输入的文本放入字符串中?

也许你是故意的?

EditText txtPassword = (EditText) findViewById(R.id.Txt_password);
int PIN = Integer.parseInt(txtPassword.getText().toString());

if (PIN == 4444) { }

R.id.Txt_password 永远不会等于 4444

您没有获取 EditText 的文本。您可以通过以下方式获得它:

EditText passwordText = (EditText) findViewById(R.id.Txt_password);
int PASS = Integer.parseInt(passwordText.getText().toString());

现在进行比较。

int pass = 4444;

if(pass == PASS) {
    ...
    ...
}

但是,您需要在按钮的 onClickListener 中执行此操作。请参阅下面的参考代码:

Button Btn_Submit = (Button) findViewById(R.id.Btn_Submit);

    //Creates a listener for the button to react when it is pressed
    Btn_Submit.setOnClickListener(new View.OnClickListener() {
        //Gives the button instructions when it is pressed
        @Override
        public void onClick(View view) {
            EditText passwordText = (EditText) findViewById(R.id.Txt_password);
            int pass = Integer.parseInt(passwordText.getText().toString());

            if(pass == 4444) {
                Intent startIntent = new Intent(getApplicationContext(), Control_Screen.class);
                startActivity(startIntent);
            }
            else {
                Intent startIntent = new Intent(getApplicationContext(), Password.class);
                startActivity(startIntent);
    });

您需要从 EditText 字段中获取文本并将其更改为整数值,如下所示:

EditText passText = (EditText) findViewById(R.id.Txt_password);
int PIN = Integer.valueOf(passText.getText().toString());

if (PIN == 4444) { 
    ...
}

我认为你最好反过来。不要更改整个按钮侦听器,也不要在方法调用内创建匿名对象。如何将绑定与您的实际业务逻辑分开?考虑一下:

public class YourFragment extends Fragment implements View.OnClickListener {

    private Button Btn_Submit;
    private EditText Txt_password;

    private final PIN = 4444;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        // inflate layout of fragment or set content if this is an activity
        (...)

        Btn_Submit = (Button) findViewById(R.id.Btn_Submit);
        Btn_Submit.setOnClickListener(this);

        Txt_password = (EditText) findViewById(R.id.Txt_password);
    }

    @Override
    public void onClick(View v) {
        // if you have multiple elements with click listeners in this fragment/activity, separate calls here. I'm assuming we get only the submit button here.

        Integer input_pin = Integer.parseInt(Txt_password.getText());
        if (PIN == input_pin) {
            Intent startIntent = new Intent(getApplicationContext(), Control_Screen.class);
            startActivity(startIntent);
        }
        // if pin wrong, reset text field and optionally show the user a notification
        Txt_password.setText("");
    }
}

如果你想让它更干净,将 onClick 的整个代码放入一个名为 onSubmitPin() 的方法中,并在按下提交按钮时从 onClick 调用它。