Android 安卓应用锁

Android 安卓应用锁,android,lockscreen,Android,Lockscreen,我正在尝试为我的应用程序应用锁定屏幕 我认为这个过程是,如果密码不正确,请转到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); //Cr

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

我认为这个过程是,如果密码不正确,请转到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_密码的代码

 <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\u密码
永远不会等于
4444

您没有获取您的
编辑文本
的文本。您可以通过以下操作获得:

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()
的方法中,并在按下submit按钮时从onClick调用它。

您是否意识到您尝试实现的goes没有提供任何安全好处?除了不起作用之外…谢谢。目前我只是在学习如何处理事情。安全性是项目后期的一项工作。再次感谢你的建议。我已经编辑了我的答案。请看一看。无论密码正确与否,此解决方案都会将我带到控制页。我认为这可能是我的if声明,对吗?所有其他解决方案都会将我带到密码不正确的页面。我也不是把这些答案记为否决票的人。这完美地解决了我的问题。谢谢你的帮助。非常感谢。