Android,LayoutInflater 不工作
Android, LayoutInflater not working
我需要你帮忙做这个充气机。我需要从 Activity3 中获取 Activity1 中 EditText 中的内容。
例如:在 Activity1 中我写了我的名字、电子邮件、ecc。在 Activity2 中我选择我的生日,在 Activity3 中我想同时看到这两个。
所以我在Activity3中使用了LayoutInflater,但是当我将EditText解析为字符串时,字符串为空。
代码如下:
LayoutInflater inflater = getLayoutInflater();
View v1 = inflater.inflate(R.layout.activity_register1, null);
etName = (EditText) v1.findViewById(R.id.etName);
etLastName = (EditText) v1.findViewById(R.id.etLastName);
etEmail = (EditText) v1.findViewById(R.id.etEmail);
etPassword = (EditText) v1.findViewById(R.id.etPassword);
actvCity = (AutoCompleteTextView) v1.findViewById(R.id.actvCity);
etDescription = (EditText) v1.findViewById(R.id.etDescription);
View v2 = inflater.inflate(R.layout.activity_register2, null);
datePicker = (DatePicker) v2.findViewById(R.id.datePicker);
birthday = new GregorianCalendar(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
btnRegister = (Button) findViewById(R.id.btnRegister);
/** Register Button Click event */
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = etName.getText().toString().trim();
String lastName = etLastName.getText().toString().trim();
String email = etEmail.getText().toString().trim();
String password = etPassword.getText().toString().trim();
String description = etDescription.getText().toString().trim();
String city = actvCity.getText().toString().trim();
String dateString = DateFormat.getDateInstance().format(birthday.getTime());
//if (!name.isEmpty() && !lastName.isEmpty() && !email.isEmpty() && !password.isEmpty() && !city.isEmpty())
Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG).show();
//}
}
});
}
日期字符串有效。但是所有其他字符串都是空的(“”)。
我该如何解决这个问题,或者告诉我这个问题是否有其他解决方案。
谢谢。
您在 Activity3
中使用 inflater.inflate()
扩充的布局与您在 Activity1
或 Activity2
中扩充的布局不同。
您不能仅通过扩充布局来使用在不同活动中输入的数据。
您需要在接收方 activity 中使用 getIntent()
并在发送方 activity 方的 intent
中设置所需数据(在 startActivity(intent)
中使用)。
所以您需要先将您的值从 Activity1
传递到 Activity2
,然后获取 Activity2
中的数据,然后再次发送 Activity1
和Activity2
到 Activity3
。
有关使用 Intent 进行数据传输的更多详细信息,请查看 this.
我需要你帮忙做这个充气机。我需要从 Activity3 中获取 Activity1 中 EditText 中的内容。
例如:在 Activity1 中我写了我的名字、电子邮件、ecc。在 Activity2 中我选择我的生日,在 Activity3 中我想同时看到这两个。
所以我在Activity3中使用了LayoutInflater,但是当我将EditText解析为字符串时,字符串为空。
代码如下:
LayoutInflater inflater = getLayoutInflater();
View v1 = inflater.inflate(R.layout.activity_register1, null);
etName = (EditText) v1.findViewById(R.id.etName);
etLastName = (EditText) v1.findViewById(R.id.etLastName);
etEmail = (EditText) v1.findViewById(R.id.etEmail);
etPassword = (EditText) v1.findViewById(R.id.etPassword);
actvCity = (AutoCompleteTextView) v1.findViewById(R.id.actvCity);
etDescription = (EditText) v1.findViewById(R.id.etDescription);
View v2 = inflater.inflate(R.layout.activity_register2, null);
datePicker = (DatePicker) v2.findViewById(R.id.datePicker);
birthday = new GregorianCalendar(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
btnRegister = (Button) findViewById(R.id.btnRegister);
/** Register Button Click event */
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = etName.getText().toString().trim();
String lastName = etLastName.getText().toString().trim();
String email = etEmail.getText().toString().trim();
String password = etPassword.getText().toString().trim();
String description = etDescription.getText().toString().trim();
String city = actvCity.getText().toString().trim();
String dateString = DateFormat.getDateInstance().format(birthday.getTime());
//if (!name.isEmpty() && !lastName.isEmpty() && !email.isEmpty() && !password.isEmpty() && !city.isEmpty())
Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG).show();
//}
}
});
}
日期字符串有效。但是所有其他字符串都是空的(“”)。
我该如何解决这个问题,或者告诉我这个问题是否有其他解决方案。
谢谢。
您在 Activity3
中使用 inflater.inflate()
扩充的布局与您在 Activity1
或 Activity2
中扩充的布局不同。
您不能仅通过扩充布局来使用在不同活动中输入的数据。
您需要在接收方 activity 中使用 getIntent()
并在发送方 activity 方的 intent
中设置所需数据(在 startActivity(intent)
中使用)。
所以您需要先将您的值从 Activity1
传递到 Activity2
,然后获取 Activity2
中的数据,然后再次发送 Activity1
和Activity2
到 Activity3
。
有关使用 Intent 进行数据传输的更多详细信息,请查看 this.