gpt4 book ai didi

android - 在 subview 中处理 BACK 键事件,而不是在 Activity 中

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:47 25 4
gpt4 key购买 nike

在我的应用中,用户可以点击图像缩略图来查看完整尺寸的版本。当点击缩略图时,会在代码中创建一堆新 View (即没有 XML),附加在 View 层次结构的末尾,并发生一些缩放和旋转过渡,然后显示图像的全尺寸、高分辨率版本。点击全尺寸图像可反转转换并从 View 层次结构中删除新 View 。

我希望用户也能够按 BACK 键来反转图像转换。但是,我似乎无法捕捉到 KeyEvent。这就是我目前正在尝试的:

        // Set a click listener on the image to reverse everything        frameView.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0)            {                zoomOut(); // This works fine            }        });        // Set the focus onto the frame and then set a key listener to catch the back buttons        frameView.setFocusable(true);        frameView.setFocusableInTouchMode(true);        frameView.requestFocus();        frameView.setOnKeyListener(new OnKeyListener() {            @Override            public boolean onKey(View v, int keyCode, KeyEvent event)            {                // The code never even gets here !!!                if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)                {                    zoomOut();                    return true;                }                return false;            }        });

编辑:我收到了一些人的回答,他们提供了要在扩展 Activity 的类中使用的代码 fragment 。我在上面复制的这段代码存在于一个在多个 Activity 中实例化的类中;我的目标是让代码在一个地方监听和捕获 BACK 键事件(如 OnClickListener()),而不是必须在每个 Activity 中都有它(并创建从每个 Activity 到缩放对象的长而笨重的引用).

最佳答案

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK)
{
//Your logic or stuff
return true;
}
else
return super.onKeyUp(keyCode, event);
}

使用上面的覆盖方法来处理返回键按下事件

在这些场景中使用如下1) 创建如下 Activity::

/**
* Top Activity that extends all Activity
*/
package com.com.com;//change your package name

import android.app.Activity;
import android.view.KeyEvent;


public class TopActivity extends Activity {
protected BaseActivity _activity;


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK){
//your stuff if you wanna to have anything
return true;
}
else
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK)
{
//your stuff if you wanna to have anything
return true;
}
else
return super.onKeyUp(keyCode, event);
}

}

2) 现在在您的代码中,您的每个 Activity 都扩展了 Acitivity,因此请更改它,使其扩展 TopActivity,如下所示:

public class YourActivity extends TopActivity {

//每个 Activity 的正常代码...

就是这样......现在试试吧

关于android - 在 subview 中处理 BACK 键事件,而不是在 Activity 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9986913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com