我是Android上的首发,嘲笑手机的联系人列表。现在我有一个联系人列表,如下图所示,当我按下联系人列表中的一项时,它会弹出一个有两个选项的对话框。如果我选择“添加到黑色”,另一个AlertDialog允许我将此号码放入黑名单。我想在这里想到的是自动读取我选择的项目的编号,将其显示在“数字”空白处,这不需要用户再次输入。但事实证明它没有用,仍然没有什么是空白的。显示添加黑色对话框的屏幕截图和代码如下所示。
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是我的布局。
我想知道错误的观点的原因是奇怪的事情发生了:当我手动输入数字和评论时(比如我按下联系人“杰克”的号码:8871203459和“杰克”作为评论)并按下“添加”,同时空白中的东西突然变为其他一些数字(我在其他活动中得到的一些数字),如下所示,存储的黑色数据也是奇怪的数字。
这很奇怪,因为我写了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));
这是一个漫长而无聊的问题。感谢您的阅读和帮助...
答案 0 :(得分:1)
刚刚将相关评论转移到答案中。
只有在单击对话框上的“添加”按钮后才会运行setText。单击
,将查找视图和setText移出对话框答案 1 :(得分:0)
使用toString()
方法将文本转换为字符串,然后将其放在适当的位置。我遇到了同样的问题并通过这种方法解决了。
答案 2 :(得分: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()
和contactList.get(arg2).get("name").toString()
,但只是不显示它们。除了我在EditTexts上输入的任何内容之外,它们将传递上面的两个值,而不是我新输入的值,尽管我已经指定了String number = inputNumber.getText().toString()
和String remark = inputRemark.getText().toString()
。
最后更新:问题解决了,它不是一个硬技术,而是一个编程逻辑错误。如果有人遇到同样的问题,请参考@ ElefantPhace在上方的答案。谢谢大家!