Переопределение действия кнопки «Назад» в действии - PullRequest
1 голос
/ 02 ноября 2010

Я только что переместил свою кнопку "Назад" в своем коде, как это

        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {

                return true;
            }
            return super.onKeyDown(keyCode, event);
        }

        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event)
          {

                 {
                       startActivity(new  Intent(context, MainDialog.class));
                       finish();

                return true;
            }
            return super.onKeyUp(keyCode, event);
        }

Теперь я столкнулся со странной проблемой, у меня есть текст для редактирования текущей Активности.Во время редактирования, когда я пытаюсь закрыть виртуальную клавиатуру, нажав кнопку назад.Мое приложение заканчивается ... Но я просто хочу закрыть клавиатуру, а не Avtivity .. Любое предложение, чтобы решить мою проблему ..?

Заранее спасибо, Tanmay


I have tried both 

       @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) 
        {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {

               startActivity(new  Intent(context, MainDialog.class));
               finish();
               return true;
        }
        return super.onKeyUp(keyCode, event);
    }

и

        @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) 
        {
        if (keyCode == KeyEvent.KEYCODE_BACK ) {

               startActivity(new  Intent(context, MainDialog.class));
               finish();
               return true;
        }
        return super.onKeyUp(keyCode, event);
    }

Но безрезультатно.Любое предложение !!

Ответы [ 2 ]

4 голосов
/ 02 ноября 2010

Кажется, вы пропустили оператор if, который перехватывает код возврата.Попробуйте это:

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            startActivity(new  Intent(context, MainDialog.class));
            finish();
            return true;
        }
        return super.onKeyUp(keyCode, event);
    }
0 голосов
/ 17 декабря 2011

Возможно, еще одно решение, можем ли мы сделать так ...

У меня есть ImageButton by id buttonBack в xml. Я получаю это на btnBack и добавляю OnClickListener

Вpublic void onClick function Я вызываю намерение класса, имеющего другой макет, возможно, предыдущего класса ... надеюсь, это работает для всех ... спасибо.

ImageButton btnBack = (ImageButton)this.findViewById(R.id.buttonBack);
    btnBack.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
        Intent myIntent = new Intent(view.getContext(), Your.class);
                    startActivityForResult(myIntent, 0);

        }
    });
...