在我的 Android 应用中,只有一个Activity
和一堆java类。
我需要使用Remote Control
(像DPAD这样的箭头键)来浏览所有未触摸的项目。所以我尝试使用onKeyDown(int keyCode, KeyEvent event)
方法。但是这种方法适用于Activity
,而其他文件则使用dispatchKeyEvent(KeyEvent event)
方法。
问题是在某些文件中根本不调用此方法。 有没有人知道这个方法对我的应用程序是否有用,以及为什么在某些文件中没有调用此方法?
public Music_app(final Context context) {
super(context);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
setLayoutParams(lp);
this.context=context;
LayoutInflater inflater =
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
xmlLayout_layer1 = (RelativeLayout)inflater.inflate(R.layout.app_music, null);
xmlLayout_layer1.setLayoutParams(lp);
addView(xmlLayout_layer1);
TextView album_btn = (TextView) xmlLayout_layer1.findViewById(R.id.music_album);
TextView singer_btn = (TextView) xmlLayout_layer1.findViewById(R.id.music_singer);
TextView year_btn = (TextView) xmlLayout_layer1.findViewById(R.id.music_year);
TextView genre_btn = (TextView) xmlLayout_layer1.findViewById(R.id.music_genre);
album_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
levelTwoList = (ArrayList<HashMap<String,String>>) SoapCommand.invokeMethod(SoapCommand.LIST_MUSIC_SECOND_LEVEL,
SoapCommand.KEY_MUSIC_LEVEL_2,
SoapCommand.KEY_LANGUAGE,
Integer.toString(1),
LocalDatabase.language);
Log.e("levelTwoList ",""+levelTwoList );
first_level_path = context.getString(R.string.album);
first_level_type = 1;
goToSecondLevel(1);
}
});
t.start();
}
});
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
Log.e("Umd", "Music ");
if (event.getAction()!=KeyEvent.ACTION_UP){
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_DPAD_RIGHT:{
Log.e("FF1", "RIGHT");
return true;
}
}
}
return super.dispatchKeyEvent(event);
}