如何在使用意图时在第一个活动中不丢失任何数据

好吧,假设我们有2个活动,例如主要活动(mA)和第二活动(sA)mA是用户界面,它从用户那里获取名称,编号。还有一个文本视图和一个按钮。该按钮通向 sA。sA 有一个日历,可让您选择一天。您选择日期并返回 mA,您选择的日期将写在文本视图上。没关系,直到现在的问题是,当我回到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);


千万里不及你
浏览 121回答 1
1回答

红糖糍粑

尝试使用 。startActivityForResult阅读官方安卓开发者文档中的文档从本质上讲,你会做的是将数据传递给称为s的对象,如下所示(例如在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()}回到您的第一个活动的方法overrideonActivityResultoverride 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 -> {}     }}这些片段是非常快速和肮脏的片段,我建议例如,您在Java中将您作为静态变量,或者在Kotlin中的活动的伴随对象的属性中。requestCode爪哇的等价物将是在您的第一个活动中: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();}回到您的第一个活动的方法overrideonActivityResult@Overridepublic 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;     }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java