我正在使用虚拟数据制作联系人管理器,我目前有一个包含联系人 ArrayList 的公共字段,即 public static ArrayList contactList = new ArrayList();
单击特定联系人(从查看联系人屏幕)后,我将进入编辑联系人屏幕,其中显示该特定联系人的所有字段。即姓名、手机、地址、电子邮件等。列表中的第一个联系人在单击时会正确显示其详细信息。但是,当我返回查看联系人屏幕时,它仍然显示第一个联系人的字段。
在我的 MainActivity.java 类中:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parentView, View clickedView, int clickedViewPosition, long id){
TextView firstName = (TextView) findViewById(R.id.firstName);
String fName = firstName.getText().toString();
Intent theIntent = new Intent(getApplication(), EditContact.class);
theIntent.putExtra("firstName", fName);
startActivity(theIntent);
}
});
我将点击的联系人的名字传递给 putExtra(),这将我带到 EditContact 类,我在其中运行 ArrayList 并获取具有相同名字的联系人,然后获取其所有字段(存储在相应的文本框中)。
@Override
public void onCreate(Bundle savedInstanceState) {
// Get saved data if there is any
super.onCreate(savedInstanceState);
// Designate that add_new_contact.xml is the interface used
setContentView(R.layout.edit_contact);
// Initialize the EditText objects
firstName = (EditText) findViewById(R.id.firstName);
lastName = (EditText) findViewById(R.id.lastName);
dateOfBirth = (EditText) findViewById(R.id.dateOfBirth);
mobileNumber = (EditText) findViewById(R.id.mobileNumber);
homeNumber = (EditText) findViewById(R.id.homeNumber);
workNumber = (EditText) findViewById(R.id.workNumber);
homeEmail = (EditText) findViewById(R.id.emailAddressHome);
workEmail = (EditText) findViewById(R.id.emailAddressWork);
homeAddress = (EditText) findViewById(R.id.homeAddress);
workAddress = (EditText) findViewById(R.id.workAddress);
Intent theIntent = getIntent();
String thefirstName = theIntent.getStringExtra("firstName");
for (Contact con: MainActivity.contactList){
if (con.getFirstName().equals(thefirstName)){
firstName.setText(con.getFirstName());
lastName.setText(con.getLastName());
dateOfBirth.setText(con.getDateOfBirth());
mobileNumber.setText(con.getMobileNumber());
homeNumber.setText(con.getHomeNumber());
workNumber.setText(con.getWorkNumber());
homeEmail.setText(con.getHomeEmail());
workEmail.setText(con.getWorkEmail());
homeAddress.setText(con.getHomeAddress());
workAddress.setText(con.getWorkAddress());
}
}
}
有谁知道为什么当我单击另一个联系人时,在 putExtra() 中传递的名字没有改变?