gpt4 book ai didi

android - AlertDialog - 显示自定义类的软键盘不起作用

转载 作者:行者123 更新时间:2023-12-04 19:25:11 25 4
gpt4 key购买 nike

我的问题是我的自定义 alertdialog 类没有正确显示软键盘。我正在使用

SettingsDialog settingsDialog = new SettingsDialog(MainActivity.this);
settingsDialog.show();

并且软键盘不显示。我已经按照其他 stackoverflow 答案来显示键盘... Show soft keyboard for dialog

如果我不使用自定义类,它会起作用
AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
mBuilder.setView(R.layout.alertdialog_settings);
AlertDialog alertDialog = mBuilder.create();
alertDialog.show();

enter image description here

但是,当使用自定义 AlertDialog 类时,我似乎无法获得与上图相同的结果

我试过手动显示键盘
SettingsDialog settingsDialog = new SettingsDialog(MainActivity.this);
settingsDialog.show();
InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null){
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}

enter image description here

但是,它显示了 alertdialog 后面的键盘,并且没有提供与 AlertDialog Builder 相同的效果。

如何使用自定义 AlertDialog 显示软键盘以使用 AlertDialog Builder 进行输出?

编辑:

我也尝试在 AlertDialog 的 onCreate 方法中手动显示它
public class SettingsDialog extends AlertDialog {
public SettingsDialog(@NonNull Context context, String subName) {
super(context);
this.mContext = context;
this.mSubName = subName;

}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alertdialog_settings);

InputMethodManager imm = (InputMethodManager)
mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null){
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}

}
}

但是,这仍然会导致键盘显示在 alertDialog 后面

最佳答案

我认为您不需要扩展 Alert Dialog 类,您可以做的只是一个包含帮助函数的自定义 java 创建您的自定义对话框,因此您仍然可以拥有代码抽象并且可以轻松添加其他功能。

public class SettingsDialog  {

private AlertDialog.Builder mBuilder = null;
private AlertDialog alertDialog = null;

public SettingsDialog(@NonNull Context context, String subName) {
this.mSubName = subName;
this.mContext = context;
}

public show(){
mBuilder = new AlertDialog.Builder(mContext);
mBuilder.setView(R.layout.someID);
alertDialog = mBuilder.create();
alertDialog.show();
}

public void dismiss(){
if(alertDialog == null) return;
alertDialog.dismiss();
}

// can use interface to handle callbacks

}


// usage

SettingsDialog sd = new SettingsDialog(this, "MATHS");
sd.show();
//sd.dismiss();

关于android - AlertDialog - 显示自定义类的软键盘不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59523383/

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