gpt4 book ai didi

android - SoftKeyboard 不会为新显示的 Fragment 显示

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:34:09 24 4
gpt4 key购买 nike

我有一个 FragmentActivity,它最初显示一个带有几个按钮的 fragment 。单击其中一个按钮时,FragmentActivity 会显示一个带有一些 editText 字段的新 fragment 。当显示带有 editText 字段的新 fragment 时,我似乎无法显示软输入键盘。

在 list 上使用 windowSoftInput 模式已经过时,因为它会立即显示键盘。

 android:windowSoftInputMode="stateUnchanged"

我试过用

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)

没有用。以下是我如何显示我的 Activity 中的新 fragment :

public void clickHandler(View view) {
switch (view.getId()) {
case R.id.login:
loginFragment = new LoginFragment();
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();

transaction.replace(R.id.fragment_container, loginFragment);
transaction.addToBackStack(null);
transaction.commit();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
break;

...

我还尝试从 fragment 的 onCreate 中调用 setSoftInputMode,但效果不佳。认为这是一个时间问题,我用 handler.postDelayed 尝试过,但也没有用。它看起来像这样:

onResume...    
Handler handler = new Handler();
Runnable runnable = new Runnable() {

@Override
public void run() {
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
}
};

handler.postDelayed(runnable, 1000);

任何帮助将不胜感激。谢谢。

最佳答案

在你的 onResume 上你可以这样做:

EditText someEditText = (EditText)getActivity().findViewById(R.id.someEditText);
someEditText.requestFocus();
InputMethodManager mgr = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(someEditText, InputMethodManager.SHOW_IMPLICIT);

关于android - SoftKeyboard 不会为新显示的 Fragment 显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751660/

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