Android Назад Кнопка Нажата Проверить
Итак, в настоящее время я разрабатываю пошаговое игровое приложение. И он показывает тосты с точки зрения того, чья очередь это после каждого хода. Что странно, если я нажму кнопку "назад", он вернется в Главное меню(предыдущее действие), но тосты все равно будут задерживаться, пока они не закончатся. Кроме того, если я дважды ударю в ответ, и он перейдет на главный экран, тосты будут по-прежнему отображаться, пока они не закончатся. Я хочу реализовать проверку или какой-то способ отменить эти тосты, когда нажата кнопка Назад. Я нужно сделать это и в моем представлении, мое представление содержит все тосты и весь код к игре, у gameActivity есть только onCreate, чтобы создать представление для игры. Есть идеи?
6 ответов:
В вашей деятельности у вас есть переопределенный метод:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // do something yourView.notifyBackPressed(); return false; } return super.onKeyDown(keyCode, event); }И в вашем представлении вы должны реализовать метод, например
notifyBackPressed().
Попробуйте Это...
- Попробуйте использовать тост .LENGTH_SHORT или
Вы должны установить длительность (миллисекунды) для пользовательских тостов, таких как этот.
Заказной тост:
LayoutInflater inflater = getActivity().getLayoutInflater(); View layoutToast = inflater.inflate(R.layout.custom_toast_layout, (ViewGroup) getActivity().findViewById(R.id.toastcustom)); ((TextView) layoutToast.findViewById(R.id.texttoast)).setText("I'm custom toast"); final Toast myToast = new Toast( (EmployerNominationView) getActivity()); myToast.setView(layoutToast); myToast.setDuration(300); myToast.setGravity(Gravity.BOTTOM, 0, 45); myToast.show(); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { myToast.cancel(); } }, 1000);
Генерировать Тосты
Toast toast; toast = Toast.makeText(getBaseContext(), "Messages", Toast.LENGTH_LONG); toast.show();Отмените тост, который вы можете использовать onKeyDown () или onBackPressed ().
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { toast.cancel(); return true; } return super.onKeyDown(keyCode, event);}
//Try with making Toast Global and cancel the toast on Back Pr Toast mToast = new Toast(ApplicationContext); public void onBackPressed(){ mToast.cancel(); }
Я нашел это и буду преследовать тебя. Библиотека Android AppMsg (Crouton) Реализация уведомлений в макете. На основе всплывающих уведомлений.
Я использую нижеприведенный метод, чтобы обнаружить кнопку Назад, нажатую на панели действий в activity первым методом, а второй используется для обнаружения кнопки мобильного оборудования back или kill activity.
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } } @Override public void onBackPressed() { setResult(RESULT_CANCELED); super.onBackPressed(); }
Comments