Як відключити кнопку назад в android під час виходу з програми?
Як відключити кнопку назад в android під час виходу з програми?
Відповіді:
Замініть метод onBackPress і не робіть нічого, якщо ви мали намір обробити кнопку "назад" на пристрої.
@Override
public void onBackPressed() {
if (shouldAllowBack()) {
super.onBackPressed();
} else {
doSomething();
}
}
Якщо шукати вищий рівень api 2.0 і вище, це буде чудово працювати
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
Якщо шукаєте андроїд api рівень до 1.6.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
return true;
}
return super.onKeyDown(keyCode, event);
}
Напишіть вище код у своїй діяльності, щоб запобігти натисканню кнопки "назад"
Це можна зробити простим способом. Не дзвоніть на super.onBackPress ()
@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
Просто замініть метод onBackPress () .
@Override
public void onBackPressed() { }
Я використовую його .............
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK)
Toast.makeText(getApplicationContext(), "back press",
Toast.LENGTH_LONG).show();
return false;
// Disable back button..............
}
Якщо ви хочете переконатися, що ваша клієнтська програма для Android вийшла з якогось сервера, перш ніж ваша активність буде вбита, -> вийдіть із сервісом на власному потоці (це ви все одно повинні робити).
Вимкнення кнопки "назад" нічого не вирішить для вас. У вас все ще буде така ж проблема, коли, наприклад, користувач отримає телефонний дзвінок. Коли телефонний дзвінок надійде, у вашої діяльності є стільки ж шансів на смерть, перш ніж вона отримає надійну відповідь від мережі.
Ось чому ви повинні дозволити службі чекати власну нитку для відповіді від мережі, а потім змусити її спробувати ще раз, якщо вона не вдається. Служба андроїдів не тільки набагато рідше загине, перш ніж вона отримає відповідь, але якщо вона дійсно загине перед тим, як закінчити роботу, її завжди може оживити AlarmManager, щоб спробувати ще раз.
Просто перекрийте метод onBackPress () і не потрібно викликати суперклас методу onBackPress або ін.
@Override
public void onBackPressed()
{
}
Або передайте свою поточну активність методу onBackPress ().
@Override
public void onBackPressed()
{
startActivity(new Intent(this, myActivity.class));
finish();
}
Замініть потрібну назву діяльності на myActivity.
якщо ви використовуєте фрагмент, то перш за все викликайте метод callParentMethod ()
public void callParentMethod(){
context.onBackPressed(); // instead of context use getActivity or something related
}
потім викличте порожній метод
@Override
public void onBackPressed()
{
}
якщо ви використовуєте FragmentActivity
. то роби так
перший дзвінок Це всередині вашого Fragment
.
public void callParentMethod(){
getActivity().onBackPressed();
}
а потім виклик onBackPressed
методу у своєму батьківському FragmentActivity
класі.
@Override
public void onBackPressed() {
//super.onBackPressed();
//create a dialog to ask yes no question whether or not the user wants to exit
...
}
Ви можете змінити onBackPressed()
метод у своїй діяльності та видалити виклик до суперкласу.
@Override
public void onBackPressed() {
//remove call to the super class
//super.onBackPressed();
}
Вам просто потрібно перекрити метод для кнопки "назад". Ви можете залишити метод порожнім, якщо хочете, щоб нічого не відбулося при натисканні кнопки "назад". Перегляньте код нижче:
@Override
public void onBackPressed()
{
// Your Code Here. Leave empty if you want nothing to happen on back press.
}
Окремо сформуйте ці два методи з відповіді вище.
onBackPress () (Рівень API 5, Android 2.0)
onKeyDown () (API рівень 1, Android 1.0)
Ви також можете змінити dispatchKeyEvent()
(API рівня 1, Android 1.0), як це,
dispatchKeyEvent()
(API рівня 1, Android 1.0)
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.dispatchKeyEvent(event);
}
Вимкнути задню кнопку в Android
@Override
public void onBackPressed() {
return;
}
Спробуйте це:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}