2016-03-25 5 views
0

Я пытаюсь применить экран блокировки для своего приложения.Android App Lock

Я думал процесс, если пароль неверен идут страницы А и если его правильно перейти к странице Б.

I'v написал эту

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, который жестко закодирован в но IV получил такое ощущение, что это не так, и есть проблема.

Как я могу сделать это правильно?

Возможно, есть способ разместить текст, который пользователь вводит в поле пароля в строку?

+0

Вы понимаете, что вы пытаетесь реализовать это, не предлагает каких-либо преимуществ в плане безопасности? Помимо того, что он не работает ... –

+0

Спасибо. На данный момент я просто изучаю вещи. Безопасность - это работа для последующего проекта. Еще раз спасибо за совет. – Kie21

+0

Я отредактировал свой ответ. Взглянуть. –

ответ

0

Вы не извлечение текст вашего 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); 
    }); 
+0

Это решение выводит меня на страницу управления независимо от правильности или неправильности пароля. я прав, думая, что это может быть мое заявление? Все другие решения берут меня на неверную страницу с паролем. Кроме того, я не был тем, кто отметил эти ответы в качестве понижающего голоса. – Kie21

+0

См. Отредактированный ответ. –

+0

Это отлично разобрало мою проблему. Спасибо за вашу помощь. Очень признателен. – Kie21

0

Возможно, вы хотели это сделать?

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

if (PIN == 4444) { } 

R.id.Txt_password никогда не будет равна 4444

0

Вам нужно получить текст из поля EditText и изменить его в целое значение, например:

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

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

Я думаю, вы бы лучше продвигается другой способ вокруг. Не меняйте весь прослушиватель кнопок и не создавайте анонимные объекты внутри вызова метода. Как насчет разделения привязки с вашей фактической бизнес-логикой? Рассмотрим это:

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, когда была нажата кнопка отправить.