我是 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));
这是一个漫长而无聊的问题。感谢您的阅读和帮助...