找不到一种方法来正确地传递带有意图的数据b.w两个活动

brtdzjyr  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(292)

无论何时我从第一个活动移动到第二个活动,然后返回到第一个活动,第一个活动中给出的值都将为空,即使我通过intent来回传递该值。
活动-1

  1. String date = getIntent().getStringExtra("date");
  2. String name = getIntent().getStringExtra("name");
  3. textView1.setText(date);
  4. textView2.setText(name);
  5. b1.setOnClickListener(new View.OnClickListener() {
  6. @Override
  7. public void onClick(View v) {
  8. Intent intent= new Intent(Main.this,date.class);
  9. intent.putExtra("name1", name);
  10. startActivity(intent);
  11. }
  12. });

活动-2

  1. calendarView=(CalendarView)findViewById(R.id.calendarView);
  2. String name1 = getIntent().getStringExtra("name1");
  3. calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
  4. @Override
  5. public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
  6. String date = dayOfMonth+"-"+month+"-"+year;
  7. Intent intent = new Intent(date.this , Main.class);
  8. intent.putExtra("date", date);
  9. intent.putExtra("name", name1);
  10. startActivity(intent);
  11. }
  12. });
khbbv19g

khbbv19g1#

您没有返回数据,因为您正在开始一个新活动,而不是从第一个活动返回到上一个活动,开始活动以获得结果

  1. int LAUNCH_SECOND_ACTIVITY = 1
  2. Intent i = new Intent(this, SecondActivity.class);
  3. startActivityForResult(i, LAUNCH_SECOND_ACTIVITY);

从第二个活动返回结果

  1. Intent returnIntent = new Intent();
  2. returnIntent.putExtra("result",result);
  3. setResult(Activity.RESULT_OK,returnIntent);
  4. finish();

最后,在第一个活动中,在onactivityresult上接收第二个活动的结果

  1. Override
  2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  3. super.onActivityResult(requestCode, resultCode, data);
  4. if (requestCode == LAUNCH_SECOND_ACTIVITY) {
  5. if(resultCode == Activity.RESULT_OK){
  6. String result=data.getStringExtra("result");
  7. }
  8. if (resultCode == Activity.RESULT_CANCELED) {
  9. // Write your code if there's no result
  10. }
  11. }
  12. } //onActivityResult
展开查看全部

相关问题