F1とF2として2つのフラグメントがあります。 F1からOnKeyPressedのOnResumeを上書きして、F2キーを押します。 F2で、OnKeyPressedのOnResumeをオーバーライドして、押されたアプリケーションを閉じます。 しかし、問題は私がF1に戻るボタンを予告しているときにアプリを直接閉じることです。 ログを介して私は、F1の戻るボタンを押しているときに、F2のOnKeyPressedもアクティブになっていることに気付きました。 これを修正する方法。OnKeyPressedは2つのフラグメントで一緒にアクティブになっています
F1、次のように私のコードは次のようにF2のため
@Override
public void onResume() {
super.onResume();
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
System.out.println("back pressed");
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
launchFragment(new F2(), F2.class.getSimpleName());
return true;
}
return false;
}
});
}
私のコードは次のとおりです。
@Override
public void onResume() {
super.onResume();
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
System.out.println("Set back pressed");
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
Activity a=getActivity();
a.finish();
return true;
}
return false;
}
});
}