gpt4 book ai didi

android - 从 View 或外部类覆盖后退按钮

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:13 25 4
gpt4 key购买 nike

我想要做的是拦截来自外部类的后退按钮按下,如下所示:

public class AnswerView extends RelativeLayout {

public AnswerView(Context context) {
super(context);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
Log.i("AlleAntwoorden", "Back button pressed!");
return true;
}
return super.onKeyDown(keyCode, event);
}
}

我从我的主要 Activity 中像这样添加它:

RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.main_layout);
mainLayout.addView(new AnswerView(this));

最佳答案

为了让 View 接收任何事件,它需要有焦点。我没有看到任何 XML,所以让我们在运行时添加几个特征:

AnswerView layout = new AnswerView(this);
layout.setFocusableInTouchMode(true);
layout.requestFocus();
mainLayout.addView(layout);

现在您的布局将拦截 OnKeyListener 中的后退按钮。但如果另一个 View 有焦点,即使是子 View,事件也可能首先被子 View 消费。
要理解这一点,请将 EditText 添加到您的 AnswerView:

layout.addView(new EditText());

如果在 EditText 具有焦点时单击后退按钮:第一次单击关闭软键盘,第二次单击将正常完成当前 Activity。默认情况下,OnKeyListener 事件不会向上传递到 View 层次结构。

关于android - 从 View 或外部类覆盖后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392783/

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