在实现OnItemClickListener的DialogFragment的View部分中的Android setVisibility to GONE

时间:2014-02-19 11:53:18

标签: android view keyevent onitemclicklistener dialogfragment

我有一个扩展了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,因此它也不起作用。

提前感谢所有帮助。

1 个答案:

答案 0 :(得分: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 );
}