好的,可以说我们有2个活动,例如mainActivity(mA)和secondActivity(sA) mA是从用户处获取名称,编号的用户界面。 也有一个textview和一个按钮。 该按钮将导致sA。 sA有一个日历,可让您选择一天。 您选择了日期,然后返回到毫安,所选的日期将写在文本视图中。 到现在为止,这里的问题是,当我回到mA时,我从用户那里获得的先前数据将被清空,除非我的文本视图显示了日期。在进行其他活动之前,我如何保存用户数据,当我回来时,他们会留下来。
从第二个活动回来时,我希望从第一个屏幕上看到我的数据。
编辑:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), calendarActivity.class);
startActivity(intent);
}
}
calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
String date = dayOfMonth + "/" + month + "/" + year;
intent = new Intent(getApplicationContext(), MainActivity.class);
intent.putExtra("date", date);
startActivity(intent);
}
});
String date = getIntent().getStringExtra("date");
tarih.setText(date);
答案 0 :(得分:2)
尝试使用startActivityForResult
。
基本上,您要做的是像这样(例如在Kotlin中)通过称为Intent
的对象传递数据:
在您的第一次活动中:
private fun goToSelectDateActivity() {
val requestCode =324
val intent = Intent(this, CalendarActivity::class.java)
startActivityForResult(intent, requestCode)
}
在您的第二项活动中
private fun passSelectedDateToPreviousActivity(selectedDate: Date) {
val data = Intent()
data.putExtra("DATE", selectedDate.toString());
setResult(Activity.RESULT_OK, data);
finish()
}
返回第一个活动override
中的方法onActivityResult
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if(resultCode != Activity.RESULT_OK) return
when(requestCode) {
324 -> { yourTextView.text = data.getStringExtra("DATE"); }
// Other result codes
else -> {}
}
}
例如,我建议您将requestCode
作为Java中的静态变量,或者放在Kotlin中Activity的伴随对象的属性中。
相当于Java的
在您的第一次活动中:
private void goToSelectDateActivity() {
int requestCode =324;
Intent intent = new Intent(this, CalendarActivity.getClass());
startActivityForResult(intent, requestCode);
}
在您的第二项活动中
private void passSelectedDateToPreviousActivity(Date selectedDate) {
Intent data = new Intent();
data.putExtra("DATE", selectedDate.toString());
setResult(Activity.RESULT_OK, data);
finish();
}
返回第一个活动override
中的方法onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode != Activity.RESULT_OK) return;
switch(requestCode) {
case 324:
yourTextView.setText(data.getStringExtra("DATE"));
break;
// Other result codes
default: break;
}
}