Intent不仅可以启动页面还可以传递数据,这里使用两个Activity之间的回传数据。
1、实验开始
MainActivity:
public class MainActivity extends AppCompatActivity { TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=findViewById(R.id.tv); } public void requset(View view) { //这里使用startActivityForResult方法启动跳转第二个Activity,其中1:为用于接受返回结果的返回码。 Intent intent = new Intent(MainActivity.this,TowActivity.class); startActivityForResult(intent,1); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode){ case 1: //重写方法onActivityResult是TowActivity回调回来的结果,在这里可以拿到数据 requestCode为this 传入的码值,resultCode 用于判断是否成功返回结果。 if (resultCode==RESULT_OK){ String datasum = data.getStringExtra("data"); tv.setText(datasum); } break; default: } } }
MainActivity点击跳转:
跳转到TowActivity
TowActivity:
public class TowActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tow_layout); Button bu = findViewById(R.id.bun); bu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //这里点击后传入输入,将数据返回到MainActivity 中, //setResult();为关键,finish();销毁界面,直接回到MainActivity中。 Intent intent= new Intent(); intent.putExtra("data","2019-3-29"); setResult(RESULT_OK,intent); finish(); } }); } }
得到结果:
MainActivity得到结果:
当然,有一种情况,如果用户不点击button 返回数据,这时候需要重写一个方法:
@Override public void onBackPressed() { Intent intent= new Intent(); intent.putExtra("data","2019-3-29"); setResult(RESULT_OK,intent); finish(); }
如此也可以返回数据结果。