2017-02-20 13 views
1

私のダイアログフラグメントはhideで、dispatchKeyEventダイアログフラグメントは

@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"); 

なぜ呼ばない?表示しているときのAndroid dispatchKeyEventが呼び出されていませんか

+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; 
     } 
    }); 
} 
関連する問題