gpt4 book ai didi

android - 按下BACK后如何用软键盘关闭Activity?

转载 作者:可可西里 更新时间:2023-11-01 19:06:21 26 4
gpt4 key购买 nike

我有一个 Activity ,我希望在其中始终打开软件键盘。当键盘打开时,如何在 BACK 按下后关闭 Activity?现在我必须点击 BACK 两次,首先关闭键盘,然后结束 Activity。

最佳答案

如前所述,onKeyPreIme 可用于捕获后退按钮,但这需要在 TextView 中覆盖,而不是在 Activity 中覆盖。

这是一个完整的解决方案:

首先派生自 EditText 的新类,覆盖 onKeyPreIme 并调用回调接口(interface):

// EditTextWithBackButton class
public class EditTextWithBackButton extends EditText
{
public interface IOnBackButtonListener
{
boolean OnEditTextBackButton();
}

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

public EditTextWithBackButton(Context context, AttributeSet attrs)
{
super(context, attrs);
}

public void setOnBackButtonListener(IOnBackButtonListener l)
{
_listener = l;
}

IOnBackButtonListener _listener;

@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event)
{
if (event.getAction()==KeyEvent.ACTION_UP && keyCode==KeyEvent.KEYCODE_BACK)
{
if (_listener!=null && _listener.OnEditTextBackButton())
return false;
}
return super.onKeyPreIme(keyCode, event); //To change body of overridden methods use File | Settings | File Templates.
}
}

接下来,更新您的布局:

<com.yournamespace.whatever.EditTextWithBackButton
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textField"
/>

接下来,在 OnCreate 中,在 setContentView 之后更新您的 Activity :

((EditTextWithBackButton) findViewById(R.id.textField)).setOnBackButtonListener(new EditTextWithBackButton.IOnBackButtonListener()
{
@Override
public boolean OnEditTextBackButton()
{
finish();
return true;
}
});

关于android - 按下BACK后如何用软键盘关闭Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4921507/

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