2017-02-20 17 views
1

, когда мой диалог фрагмент hide, dispatchKeyEvent работал отличноAndroid dispatchKeyEvent не вызывается, когда Dialog фрагмент показывает

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 

    Toast.makeText(FragmentPlayer.this, "test: called", Toast.LENGTH_SHORT).show(); 

    return super.dispatchKeyEvent(event); 

} 

но когда мой диалог фрагмент show, dispatchKeyEvent не называется

MyDialogFragment mFragment = new MyDialogFragment(); 
mFragment.show(getSupportFragmentManager(), "MyDialog"); 

почему?

+0

У меня такая же проблема, вы поняли это? – Kingcesc

+0

@Kingcesc я нашел проблему и исправил ее – grizzly

+0

@grizzly В чем проблема? У меня схожая проблема. – Yeung

ответ

0

Не нужно вас менять DialogFragment код Dialog, вы можете сделать что-то вроде этого (в случае необходимости). Использование OnKeyListener решит вашу проблему.

public class BaseDialogFragment extends AppCompatDialogFragment { 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() { 
     @Override 
     public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
      /* Your logic, you get the KeyEvent*/ 
      return false; 
     } 
    }); 
}