Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扩展AlertDialog有什么问题?为什么对话框中的EditText中没有自动输入法_Java_Android_Android Alertdialog - Fatal编程技术网

Java 扩展AlertDialog有什么问题?为什么对话框中的EditText中没有自动输入法

Java 扩展AlertDialog有什么问题?为什么对话框中的EditText中没有自动输入法,java,android,android-alertdialog,Java,Android,Android Alertdialog,我有一个对话框(我正在简化我的用例): 我在OnCreateDialog方法之外(在活动的onContextItemSelected中)创建并使用此子类AlertDialog,如下所示: AlertDialog dialog = new EditShoppingListDialog(this); dialog.show(); 现在,我已经使用这个代码库一个多月了,从来没有看到过任何问题,这让我想知道为什么他们建议使用AlertDialog.Builder来创建自定义对话框 当我将我的应用程序部

我有一个对话框(我正在简化我的用例):

我在OnCreateDialog方法之外(在活动的onContextItemSelected中)创建并使用此子类AlertDialog,如下所示:

AlertDialog dialog = new EditShoppingListDialog(this);
dialog.show();
现在,我已经使用这个代码库一个多月了,从来没有看到过任何问题,这让我想知道为什么他们建议使用
AlertDialog.Builder
来创建自定义对话框

当我将我的应用程序部署到一个真正的设备上时,我立即发现了问题。其中最大的障碍是,即使单击AlertDialog中的EditText字段,也无法显示软键盘(IME?)

这是最好的部分;如果我说:

class EditShoppingListDialog extends Dialog {
    ...
}
如果单击对话框中的编辑文本,IME将自动显示。我发现了这一点,但接受的解决方案不适用于AlertDialog

但是,我发现在我的派生AlertDialog的OnCreate上执行此操作有助于显示IME,但它位于对话框后面,我无法与它交互:

InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,0);

我真的很抱歉丢失了这篇文章,但我已经花了5个多小时在这上面,如果能得到一些帮助,我将非常感激。我坚持扩展AlertDialog的原因是因为我需要一个没有标题栏的对话框,文档中说我不能有一个没有标题栏的对话框

设置没有标题的对话框很容易。 创建一个样式,如下所示

 <style name="no_title_dialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
</style>

对话框应该没有标题

出现,但有一个没有标题栏的
警报对话框
一点也不神奇:

AlertDialog.Builder builder;
AlertDialog alertDialog;

TextView v = new TextView(this);
v.setText("Should have no Bar...");

builder = new AlertDialog.Builder(this);
builder.setView(v);
alertDialog = builder.create();

alertDialog.show();
这看起来像这样:

AlertDialog dialog = new EditShoppingListDialog(this);
dialog.show();


(不,这不是一个
吐司
!)。如果这不是您想要的,您应该更明确地说明“我需要一个没有标题栏的对话框”的含义。

我想打自己的嘴巴!这对我来说已经足够直截了当了,我不会花那么多时间试图找出AlertDialog不工作的原因。通过阅读android文档中的这一行,我可能失明了-
使用基本dialog类创建的对话框必须有标题。如果不调用setTitle(),则用于标题的空间将保持为空,但仍然可见。如果根本不需要标题,则应使用AlertDialog类创建自定义对话框。非常感谢。
AlertDialog.Builder builder;
AlertDialog alertDialog;

TextView v = new TextView(this);
v.setText("Should have no Bar...");

builder = new AlertDialog.Builder(this);
builder.setView(v);
alertDialog = builder.create();

alertDialog.show();