-2

我是 Android 的初学者,模拟手机的联系人列表。现在我有一个联系人列表,如下图所示,当我按下联系人列表中的一项时,它会弹出一个包含两个选项的对话框。如果我选择“添加到黑色”,另一个 AlertDialog 允许我将此号码加入黑名单。我在这里要实现的是自动读取我选择的项目的编号,显示在“数字”空白处,不需要用户再次输入。但事实证明它没有用,空白处仍然没有。显示 add-black-dialog 的屏幕截图和代码如下。

在此处输入图像描述 在此处输入图像描述在此处输入图像描述

final View view = getLayoutInflater().inflate(R.layout.add_person, null);
                            AlertDialog alertDialog = new AlertDialog.Builder(MyTabHost.this).setTitle("Add a Black Number")
                                    .setView(view).setPositiveButton("Add", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            EditText inputNumber = (EditText) view.findViewById(R.id.inputNumber);
                                            EditText inputRemark = (EditText) view.findViewById(R.id.inputRemark);
                                            inputNumber.setText(dataList.get(arg2).get("number"));
                                            String number = inputNumber.getText().toString();
                                            String remark = inputRemark.getText().toString();
                                            Map<String, String> map = new HashMap<String, String>();
                                            map.put("remark", remark);
                                            map.put("number", number);
                                            map.put("display", Utils.formatPhoneNumber(number));
                                            if (MyTabHost.blackList.get(0).containsValue("You don't have any black number")) {
                                                MyTabHost.blackList.removeAll(MyTabHost.blackList);
                                            }
                                            MyTabHost.blackList.add(map);
                                            int i = mySharedPreference.getBlackSize() + 1;
                                            mySharedPreference.saveBlack(remark, number, i);
                                            mySharedPreference.saveBlackSize(i);
                                            dialog.dismiss();
                                            new AlertDialog.Builder(MyTabHost.this)
                                                    .setMessage("Black number succesfully added")
                                                    .setPositiveButton("OK", null).show();
                                        }
                                    }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            dialog.dismiss();
                                        }
                                    }).create();
                            alertDialog.show();

其实我在想我是否使用了错误的观点。正如上面的代码所述,我final View view = getLayoutInflater().inflate(R.layout.add_person, null);用来获取对话框的新视图,这里的 add_person.xml 是我的布局。

我想知道错误观点的原因是发生了一些奇怪的事情:当我手动输入号码和备注时(比如我按下联系人“Jack”的号码:8871203459 和“Jack”作为备注)并按下“添加” ,同时空白处的东西突然变成了一些其他的数字(一些我在其他活动中得到的数字),如下图,存储的黑色数据也是奇数错误的数字。

在此处输入图像描述

这很奇怪,因为我确实编写了 getText() 的代码,并保存了它:

EditText inputNumber = (EditText) view.findViewById(R.id.inputNumber);
                                            EditText inputRemark = (EditText) view.findViewById(R.id.inputRemark);
                                            inputNumber.setText(dataList.get(arg2).get("number"));
                                            String number = inputNumber.getText().toString();
                                            String remark = inputRemark.getText().toString();
                                            Map<String, String> map = new HashMap<String, String>();
                                            map.put("remark", remark);
                                            map.put("number", number);
                                            map.put("display", Utils.formatPhoneNumber(number));

这是一个漫长而无聊的问题。感谢您的阅读和帮助...

4

3 回答 3

1

刚刚将相关评论移至答案中。

仅当您单击对话框上的添加按钮后,该 setText 才会运行。单击时将查找视图和 setText 移出对话框

于 2013-10-14T14:48:41.750 回答
0

使用toString()方法将文本转换为字符串,然后将其放置在适当的位置。我遇到了同样的问题并通过这种方法解决了。

于 2013-10-13T17:24:59.770 回答
0

我在这篇文章中解决了我的第二个问题。查询错误是一个粗心的错误ArrayList。这次奇数不存在。但是EditText仍然无法以我想要的方式显示角色。如果可能,请提供帮助。

更新:我发现虽然 EditView 无法设置对用户可见的值,但它确实获得了值 - 我已经测试过了。奇怪的是,无论我在两个空格中输入什么(应该显示值)并按“添加”按钮,应用程序将始终保存我试图让它们显示的原始值。

具体来说:

EditText inputNumber = (EditText) view.findViewById(R.id.inputNumber);
EditText inputRemark = (EditText) view.findViewById(R.id.inputRemark);
inputNumber.setText(contactList.get(arg2).get("number").toString());
inputRemark.setText(contactList.get(arg2).get("name").toString());
String number = inputNumber.getText().toString();
String remark = inputRemark.getText().toString();
Map<String, String> map = new HashMap<String, String>();
map.put("remark", remark);
map.put("number", number);

我的 EditTexts 能够得到contactList.get(arg2).get("number").toString()and contactList.get(arg2).get("name").toString(),但只是不显示它们。无论我在 EditTexts 上输入什么其他值,它们都会传递上面的两个值,而不是我新输入的值,尽管我已经指定了String number = inputNumber.getText().toString()and String remark = inputRemark.getText().toString()

最后更新:问题解决了,这不是一个硬技术问题,而是一个编程逻辑错误。如果有人遇到同样的问题,请参考上方@ElefantPhace 的回答。谢谢大家!

于 2013-10-13T20:01:43.163 回答