2013-02-21 3 views
3

у меня есть этот код для переопределения кнопки back и делают его действовать как кнопка home:Переопределение кнопки назад

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     moveTaskToBack(true); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

Он работает отлично. Мой вопрос в том, что если есть одно место, я могу поставить его, чтобы он работал для всех видов деятельности. Прямо сейчас у меня этот метод реплицируется в каждом действии.

+1

Это не очень хорошая идея. Пользователи будут смущены. –

ответ

3

Создайте свою собственную BaseActivity и расширьте ее с помощью Activity, отмените ее обратно. Теперь в вашем приложении вместо использования Activity используйте BaseActivity.

Что-то вроде этого:

public abstract class BaseActivity extends Activity 
{ 
    final protected void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    onCreate_Impl(savedInstanceState); 
    } 

    abstract protected void onCreate_Impl(Bundle savedInstanceState); 
}  

Вы должны использовать onCreate_Impl вместо OnCreate.

+0

Надеюсь, это вам поможет. –

3

Создайте базовый актив, обработайте ключ и наследуйте все ваши другие действия от вашего базового действия.

+0

@Ascorbin, мне нужно набрать более быстро :) – paulkayuk

3

Создайте BaseActivity (расширяет действие) с помощью этого кода, а затем пусть все ваши действия расширяют BaseActivity, а не Activity.

1

Вы можете сделать некоторый абстрактный класс, который расширяет Activity и реализует этот метод. Затем подкласс в каждой деятельности вашего приложения. Только один класс может быть расширен за раз, но в большинстве случаев это хорошая идея иметь некоторый абстрактный класс Activity, содержащий некоторые общие функции для набора приложений.