亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在使用意圖時在第一個活動中不丟失任何數據

如何在使用意圖時在第一個活動中不丟失任何數據

千萬里不及你 2022-09-22 15:57:06
好吧,假設我們有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);
查看完整描述

1 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

嘗試使用 。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()

}

回到您的第一個活動的方法overrideonActivityResult


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 -> {}

     }

}

這些片段是非??焖俸腕a臟的片段,我建議例如,您在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


@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;

     }

}


查看完整回答
反對 回復 2022-09-22
  • 1 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號