Android 在首选项和活动之间共享onKeyDown?
我的应用程序允许用户更改某些硬键在其上的作用。他们可以在应用程序首选项中选择每个键的作用,然后在onKeyDown上启动用户选择的操作 我注意到,许多测试此功能的人,首先设置一个硬键来执行某些操作,然后立即按下该键以确认更改是否有效。然而,由于目前onKeyDown只针对我的主要活动,他们没有得到正确的反馈Android 在首选项和活动之间共享onKeyDown?,android,inheritance,Android,Inheritance,我的应用程序允许用户更改某些硬键在其上的作用。他们可以在应用程序首选项中选择每个键的作用,然后在onKeyDown上启动用户选择的操作 我注意到,许多测试此功能的人,首先设置一个硬键来执行某些操作,然后立即按下该键以确认更改是否有效。然而,由于目前onKeyDown只针对我的主要活动,他们没有得到正确的反馈 因此,我希望在我的MainActivity和PreferenceActivity中重用onKeyDown。我试图扩展BaseActivity,但这不能同时适用于PreferenceActiv
因此,我希望在我的MainActivity和PreferenceActivity中重用onKeyDown。我试图扩展BaseActivity,但这不能同时适用于PreferenceActivity和常规Activity。有没有办法通过遗传来做到这一点?我该怎么做呢?您可能无法通过继承来实现这一点,因为PreferenceActivity继承自Activity,因此您无论如何都必须编写两个类(这违背了目的) 您也可以使用一个映射,将keydown事件转换为用户设置的事件
public class DownKeyMapper {
private static Map<Integer, Integer> mKeyCodeMap;
public static void init(Map<Integer, Integer> pKeyMap) {
// init here with your mappings from preferences
mKeyCodeMap = pKeyMap;
}
public static void mapKey(int pFromKeyCode, int pToKeyCode) {
mKeyCodeMap.put(pFromKeyCode, pToKeyCode);
}
public static int getMappedKey(int pKeyCode) {
if (mKeyCodeMap.containsKey(pKeyCode)) {
return mKeyCodeMap.get(mKeyCodeMap);
} else {
return pKeyCode;
}
}
}
希望这有帮助
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
keyCode = DownKeyMapper.getMappedKey(keyCode);
return super.onKeyDown(keyCode, event);
}