Я последовал за это, чтобы запросить пароль при оповещении
Итак, я дал это на спину, но это не работает
@Override
public void onBackPressed() {
showDialog();
}
но он не работает onBackPressed, он возвращается или выходит из приложения ...
how ever its works fine with
onBackPressedalert
@Override
public void onBackPressed() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle("Do You Want to Exit ?");
alertDialogBuilder
.setMessage("Click Yes to Exit!")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
But I want Prompt Password
onBackPressed
Может ли кто-нибудь помочь мне, что не так с onBackPressed для пароля?
Попробуй это :
@Override
public void onBackPressed() {
if (isFirsttym) {
super.onBackPressed();
return;
}
// this.isFirsttym = true;
showDialog();
// new Handler().postDelayed(new Runnable() {
//
// @Override
// public void run() {
// isFirsttym=false;
// }
// }, 5000);
}
public void showDialog()
{
LayoutInflater li = LayoutInflater.from(this);
View promptsView = li.inflate(R.layout.cust_dialog, null);
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setView(promptsView);
final EditText userInput = (EditText) promptsView
.findViewById(R.id.user_input);
// set dialog message
alertDialogBuilder
.setCancelable(false)
.setNegativeButton("Go",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
/** DO THE METHOD HERE WHEN PROCEED IS CLICKED*/
String user_text = (userInput.getText()).toString();
/** CHECK FOR USER'S INPUT **/
if (user_text.equals("oeg"))
{
Log.d(user_text, "HELLO THIS IS THE MESSAGE CAUGHT :)");
// Search_Tips(user_text);
isFirsttym=true;
}
else{
Log.d(user_text,"string is empty");
String message = "The password you have entered is incorrect." + " \n \n" + "Please try again!";
AlertDialog.Builder builder = new AlertDialog.Builder(HomeActivity.this);
builder.setTitle("Error");
builder.setMessage(message);
builder.setPositiveButton("Cancel", null);
builder.setNegativeButton("Retry", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
showDialog();
isFirsttym=false;
}
});
builder.create().show();
}
}
})
.setPositiveButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
dialog.dismiss();
isFirsttym=false;
}
}
);
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
@MLN Он отлично работает на моем устройстве. можешь попробовать на другом девайсе. а также измените время на 5000, установив 2000
на самом деле на спине нажал выход из приложения, другого выхода нет .. только пустой или нормальный экран на спине.
@MLN Я обновил ответ с помощью диалогового метода, который я использовал для теста. просто проверьте это. Возможно, в вашем методе диалога есть ошибка
Я не знаю, почему, если я скопирую Вставьте ваш код, он показывает предупреждение ... Но он не работает из-за неправильного пароля, он выходит ... Если я передаю свой код в showDialog (), он даже не работает ... Но ваш код показывает предупреждение но после неправильного ввода также и его выход ... (я удалил строки комментариев в вашем коде)
@MLN Что вы хотите сделать с неправильным паролем? нам нужно сделать логику для этого :(
@MLN мы можем попробовать кое-что с этой логической переменной. удалите обработчик из backpressed .. и просто сделайте его ложным в диалоговом окне. Пытаюсь сделать демо. но до тех пор просто попробуйте это один раз
То же самое, но я обнаружил, где проблема ... если я верну его отображение предупреждения ... хорошо ... Если я нажму "Отмена" ... и верну его выход .. Он также работает с неправильным паролем ...
@MLN Проверьте, что я обновился. я изменил false при нажатии кнопки отмены
На самом деле я получаю эту ошибку android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application в строке builder.create().show(); ... Я думал, что приложение закрывается, но здесь происходит сбой ..
Нет По-прежнему то же самое с MianActivity.this, getApplicationContext (), this .. но по-прежнему то же самое
@MLN Я не получаю эту ошибку с этим кодом. Можете ли вы очистить перестроить проект
user @ Vishva Dave, ваш ответ тоже работает .. Но мне нужно добавить fishis(); при условии, если .. Я поддержу ваш другой ответ
@MLN Ничего страшного, я рад, что твоя проблема решена. Рад помочь :)
Привет, однажды попробуй, это сработало для меня ...
Прямое оповещение вместо макета
@Override
public void onBackPressed() {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Title");
alert.setMessage("Message");
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString();
// Do something with value!
/** CHECK FOR USER'S INPUT **/
if (value.equals("oeg"))
{
/*Log.d(input, "HELLO THIS IS THE MESSAGE CAUGHT :)");
Search_Tips(input);*/
finish();
}
else{
//Log.d(input,"string is empty");
String message = "The password you have entered is incorrect." + " \n \n" + "Please try again!";
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Error");
builder.setMessage(message);
builder.setPositiveButton("Cancel", null);
/*builder.setNegativeButton("Retry", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//showDialog();
}
});*/
builder.create().show();
}
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
}
Спасибо за ответ пользователя @ Vishva Dava ... Но при нажатии на спину тоже не работает.