0

onKeyDown在活动中实现关闭活动。然后在布局中添加一个按钮并实现setOnClickListener。我设法使用LayoutInflater.I为按钮单击显示另一个布局。我setOnKeyListner为使用此视图创建的视图实现了该视图Inflater的硬件后退按钮。

但是当我在显示第二个布局时单击硬件后退按钮时,里面的东西setOnKeyListner不会执行。例如下面显示“1”而不是“2”。有人可以显示我的错误吗?

提前致谢。

public class TestActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {

    button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        LayoutInflater inflater = (LayoutInflater) getApplicationContext()
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            View view = inflater.inflate(R.layout.layout_2, null);

            addContentView(view, new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            initGUI(view); //initialize layout views 

            view.setOnKeyListener(new View.OnKeyListener() {

                @Override
                public boolean onKey(View dialog, int keyCode,  KeyEvent event) {
                    if (keyCode == KeyEvent.KEYCODE_BACK) {
                        Log.i("tag","2");       

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

}
//Hardware key pressing event
@Override
       public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.i("tag","1");
        }

        return super.onKeyDown(keyCode, event);
       }
}  
4

1 回答 1

0

它是

标签 1

因为您的活动实例是comman。在按钮单击时,您仅向此活动添加内容,但在后按时,活动的上下文或引用是通用的,因此它始终调用活动的覆盖方法。

只有您的内容会添加到此活动布局中,但活动的主要上下文是单一的,这样就会发生这种情况。

于 2012-11-01T11:20:29.497 回答