在Android中不调用dispatchKeyEvent(KeyEvent事件)方法

时间:2018-01-13 09:45:34

标签: android android-activity android-keypad

在我的 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);
}

0 个答案:

没有答案