单击我的小部件时,我想显示一个输入框。这样做的方法是创建一个带有单一用途的Activity的DialogFragment来显示它吗?

时间:2014-03-20 14:32:45

标签: android android-widget android-dialog android-dialogfragment

我的目标是在用户点击我的小部件时弹出一个简单的输入框。

大多数教程似乎都使用showDialog(),但显然已弃用。

我有一个半工作的解决方案,但对于这么简单的任务来说,这似乎非常复杂。

在小部件的onUpdate方法中,我调用setOnClickPendingIntent,其意图设置为启动FragmentActivity TextDialogActivity。

在TextDialogActivity的onCreate方法中,我调用new TextDialog,然后调用show方法。

TextDialog扩展了一个DialogFragment,它的布局XML定义了一个EditText,并在我的onCreateDialog方法中添加了正面和负面按钮,设置监听器以捕获Okay上的输入或finish取消活动。

这是一个初学黑客,还是这个在Android中创建一个简单的文本输入框的方式呢?

另外,我说它只是半工作,因为活动在主屏幕上弹出一个背景,而不是简单地覆盖主屏幕的输入对话框。我认为这是我的初学者黑客的副作用,但如果这实际上是正确的方法,我做错了什么导致了这个?我原本以为没有在TextDialogActivity中调用setContentView,这不会发生。

1 个答案:

答案 0 :(得分:0)

试试这个

final EditText et=new EditText(MainActivity.this);              
    new AlertDialog.Builder(MainActivity.this)
              .setTitle("Title")
              .setView(et)
              .setPositiveButton("Ok",new DialogInterface.OnClickListener() {               
                @Override
                public void onClick(DialogInterface arg0, int arg1) {
                    // TODO Auto-generated method stub
                    //enter your code
                }
            })
              .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {              
                @Override
                public void onClick(DialogInterface arg0, int arg1) {
                    // TODO Auto-generated method stub  
                    //enter your code
                }
            })
              .create()
              .show();