0

我有一个扩展 DialogFragment 并实现 OnItemClickListener 的类。

在这个 DialogFragment 中,我有一个名为 rootView 的视图,我在其中扩展了我的主视图。当我按下一个按钮时,我会创建两个视图:

    selectItemForm = rootView.findViewById(R.id.logging_selectitem_form);
    portionForm = rootView.findViewById(R.id.logging_selectitem_portion);
    //switch forms
    selectItemForm.setVisibility(View.INVISIBLE);
    portionForm.setVisibility(View.VISIBLE);

因此,有以下视图序列 rootView > selectItemForm > partForm 。

但是,当我在 partForm 中按下 BACK 按钮时,我会返回 rootView 而不是 selectItemForm。

我还创建了一个关键监听器,如下所示:

portionForm.setOnKeyListener(new View.OnKeyListener() {

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                Log.v(TAG + "_setPortionFormOnKeyListener", "I have clicked on the BACK button.");
                if(keyCode == KeyEvent.KEYCODE_BACK) {

                    //switch forms
                    if(portionForm.getVisibility() == View.VISIBLE) {
                        portionForm.setVisibility(View.INVISIBLE);
                        selectItemForm.setVisibility(View.VISIBLE);

                        return true; 
                    } 
                }
                return false;
            }
        });

但是,这个 KeyListener 永远不会被调用,所以它也不起作用。

提前感谢所有帮助。

4

1 回答 1

0
@Override
public boolean onKeyUp( int keyCode, KeyEvent event )
{
    if( keyCode == KeyEvent.KEYCODE_BACK )
    {
       if(portionForm.getVisibility() == View.VISIBLE) {
                        portionForm.setVisibility(View.INVISIBLE);
                        selectItemForm.setVisibility(View.VISIBLE);

        }
    }
    return super.onKeyUp( keyCode, event );
}
于 2014-02-19T12:06:27.200 回答