简体   繁体   English

Android:Fragment内的“后退”按钮OnKeyListener不起作用

[英]Android: Back button OnKeyListener inside Fragment is not working

The onKeyListener() in a Fragment is not working now. Fragment中的onKeyListener()现在无法正常工作。 Here's the part of the code. 这是代码的一部分。

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment, null);
    ...

    view.setFocusableInTouchMode(true);
    view.requestFocus();
    view.setOnKeyListener(new View.OnKeyListener() {

        // true if the listener has consumed the event, false otherwise.
        // the key event happens twice, when pressing and taking off.
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if(keyCode == KeyEvent.KEYCODE_BACK && !touched) {
                Log.i(TAG, "onKey() method");
                touched = true;
                return true;
            } else {
                return false;
            }
        }
    });

    return view;
}

Is there anything I am missing? 我有什么想念的吗?

try this: 尝试这个:

 @Override
public void onViewCreated(View view, Bundle savedInstanceState) {

    super.onViewCreated(view, savedInstanceState);
    getView().setFocusableInTouchMode(true);
    getView().requestFocus();
    getView().setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                     //go to previous fragemnt
                    //perform your fragment transaction here
                    //pass data as arguments
                    return true;
                }
            }
            return false;
        }
    });
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM