Android Назад Кнопка Нажата Проверить



Итак, в настоящее время я разрабатываю пошаговое игровое приложение. И он показывает тосты с точки зрения того, чья очередь это после каждого хода. Что странно, если я нажму кнопку "назад", он вернется в Главное меню(предыдущее действие), но тосты все равно будут задерживаться, пока они не закончатся. Кроме того, если я дважды ударю в ответ, и он перейдет на главный экран, тосты будут по-прежнему отображаться, пока они не закончатся. Я хочу реализовать проверку или какой-то способ отменить эти тосты, когда нажата кнопка Назад. Я нужно сделать это и в моем представлении, мое представление содержит все тосты и весь код к игре, у gameActivity есть только onCreate, чтобы создать представление для игры. Есть идеи?

713   6  

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().

Попробуйте Это...

  1. Попробуйте использовать тост .LENGTH_SHORT или
  2. Вы должны установить длительность (миллисекунды) для пользовательских тостов, таких как этот.

    Заказной тост:

     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);
    
  1. Генерировать Тосты

    Toast toast;
    toast = Toast.makeText(getBaseContext(), "Messages", Toast.LENGTH_LONG);
    toast.show();
    
  2. Отмените тост, который вы можете использовать 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

    Ничего не найдено.