Fragment activity catch onKeyDown and use in fragment

后端 未结 6 646
别那么骄傲
别那么骄傲 2020-12-09 08:28

I have Fragment activity with pager:

List fragments = new Vector();
    fragments.add(Fragment.instantiate(this, PastEventLis         


        
6条回答
  •  北海茫月
    2020-12-09 09:26

    If someone is interessed how to do it with Boradcast:

    In your fragment in onViewCreated

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    
    
    // Register to receive messages.
    // We are registering an observer (mMessageReceiver) to receive Intents
    // with actions named "custom-event-name".
     LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
     new IntentFilter("activity-says-hi"));
    
    ...}
    
     // Our handler for received Intents. This will be called whenever an Intent
     // with an action named "custom-event-name" is broadcasted.
     private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
     @Override
     public void onReceive(Context context, Intent intent) {
     // Get extra data included in the Intent
    
     doSomethingCauseVolumeKeyPressed();
    
     }
    };
    

    your keyevent - code to put in activity

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        int action = event.getAction();
        int keyCode = event.getKeyCode();
        switch (keyCode) {
            case KeyEvent.KEYCODE_VOLUME_UP:
                if (action == KeyEvent.ACTION_DOWN) {
                    sendBroadcast();
                }
                return true;
            case KeyEvent.KEYCODE_VOLUME_DOWN:
                if (action == KeyEvent.ACTION_DOWN) {
                    sendBroadcast();
                }
                return true;
            default:
                return super.dispatchKeyEvent(event);
        }
    }
    

    your broadcast sender:

    private void  sendVolumeBroadcast(){
        Intent intent = new Intent("activity-says-hi");
        LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
    }
    

提交回复
热议问题