需要从alertDialog检索值

时间:2016-02-12 13:31:39

标签: android sqlite

我有一个SQLite数据库,我需要存储一些我放入AlertDialog的值。

这是我的代码:

 boton1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                final TextView asd = (TextView)findViewById(R.id.textView1);

                // get prompts.xml view
                LayoutInflater li = LayoutInflater.from(context);
                View promptsView = li.inflate(R.layout.dialog, null);

                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                        context);

                // set prompts.xml to alertdialog builder
                alertDialogBuilder.setView(promptsView);

                final EditText userInput = (EditText) promptsView
                        .findViewById(R.id.editTextDialogUserInput1);
                final String uI1 = userInput.getText().toString().trim();

                final EditText userInput1 = (EditText) promptsView
                        .findViewById(R.id.editTextDialogUserInput2);
                final String uI2 = userInput1.getText().toString().trim();

                final EditText userInput2 = (EditText) promptsView
                        .findViewById(R.id.editTextDialogUserInput3);
                final String uI3 = userInput2.getText().toString().trim();

                // set dialog message
                alertDialogBuilder
                        .setCancelable(false)
                        .setPositiveButton("Aceptar",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,int id) {
                                        asd.setText(uI1);
                                       if(db != null){
                                           db.execSQL("INSERT INTO Usuarios (nombre, apellidos, localidad) " +
                                                   "VALUES ('" + uI1 + "', '" + uI2 + "', '" + uI3 + "')");



                                       }
                                    }
                                })
                        .setNegativeButton("Cancelar",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        dialog.cancel();
                                    }
                                });

TextView是检查Im得到的值是否错误但我在两侧得到一个空字符串,TextView和数据库值,我缺少什么?对dialog.xml的引用很好,我有3个EditTexts,名为editTextDialogUserInput1,2和3

2 个答案:

答案 0 :(得分:0)

你必须在onclick方法中获取值。 将这些行放在onclick()

final String uI1 = userInput.getText().toString().trim();

答案 1 :(得分:0)

亚历克斯,谷歌建议使用DialogFragment代替这些场景,这将使我的意见中的代码更容易阅读。 但假设你坚持这种方法,你需要把 final String uI1 = userInput.getText()。toString()。trim();

            final String uI1 = userInput.getText().toString().trim();
            final String uI2 = userInput1.getText().toString().trim();
            final String uI3 = userInput2.getText().toString().trim();

在onlick方法中

 public void onClick(DialogInterface dialog,int id) {
                final String uI1 = userInput.getText().toString().trim();
                final String uI2 = userInput1.getText().toString().trim();
                final String uI3 = userInput2.getText().toString().trim();
    ...
    }

这样做的主要原因是您需要在用户单击“Acceptar”后评估TextEdit中的内容。你拥有它的方式,加载OnCreate后,TextEdit中存在的“”值保存在Final String中。之后输入的所有内容都无关紧要,因为创建视图后,“”的值已经并且将始终保存。

我还没有测试过,但我认为你不能在TextEdit上使用Final,或者至少不应该使用Final,因为它需要是可变的。我可能在这里错了,但我从未使用过带有TextEdit的final。