gpt4 book ai didi

android - 相同的 fragment 、edittext 和 requestfocus 问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:04 24 4
gpt4 key购买 nike

很抱歉再次请求帮助解决这个问题,但所有其他帖子都没有帮助。

场景如下:我有一个 Acivity ('A'),它包含一个布局和一个内部 fragment 。此 fragment 根据用户输入进行交换。其中一个 fragment 内部有一个编辑文本,我想专注于创作并展示该死的软键盘。因此,在我使用的 fragment 的 onCreateView() 中:



mEt = (EditText) v.findViewById(R.id.et);
mEt.setImeOptions(EditorInfo.IME_ACTION_DONE);
mEt.requestFocus();

因此,它第一次工作,但如果 fragment 被替换并稍后重新创建,它会获得焦点但键盘不会出现。

我试图在通过以下方式销毁 fragment 之前隐藏键盘:



InputMethodManager keyboard = (InputMethodManager)
ctx.getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(et.getWindowToken(), 0);

或通过以下方式显式显示键盘:



InputMethodManager keyboard = (InputMethodManager)
ctx.getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.showSoftInput(et, 0);

但是(正如您可以想象的那样,我在这里发帖 :)),问题仍然存在。

我还拼命地考虑了一个 Activity/fragment 问题,并在 Activity 中对听众使用了相同的技术,但运气不佳。

很郁闷,请帮忙:)

最佳答案

我刚刚解决了这个问题。我们有一个 Activity 用需要焦点和键盘的文本字段交换多个 fragment 。

有两种方法可以解决这个问题,我都尝试过。这是我最终采用的方法。

@Override
private View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
if (savedInstanceState != null && !savedInstanceState.isEmpty()){
msDialogMessage = savedInstanceState.getString(STATE_DAILOG_MSG);
} else{
Utils.setKeyboardFocus(mEditTextUserName);
}
...
}

/**
* Used to set focus and show keyboard (if needed) for a specified text field
* @author Ty Smith
* @param primaryTextField
*/
public static void setKeyboardFocus(final EditText primaryTextField) {
(new Handler()).postDelayed(new Runnable() {
public void run() {
primaryTextField.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0));
primaryTextField.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));
}
}, 100);
}

尽管如果您的 fragment 播放效果不佳并且生命周期方法调用不正确,您可能会考虑我的其他方法。

我不会发布代码,只是将抓取焦点方法放在自定义监听器中,并在您将 fragment 放在最前面时从 Activity 中调用它。

关于android - 相同的 fragment 、edittext 和 requestfocus 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8298399/

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