前言
今天将针对activity的跳转来複习複习
正文
这次採用bundle来传值,并区分startActivity()和startActivityForResult()
startActivity()
从Activity1跳转到Activity2
Activity1按下按钮后进行跳转
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { temp = editText.getText().toString(); bundle.putString("input",temp); intent.putExtras(bundle); startActivity(intent); } });
Activity2显示文字,按下按钮后返回(关闭Activity2)
textView=findViewById(R.id.Text); button=findViewById(R.id.b2); Bundle bundle=this.getIntent().getExtras(); String msg=bundle.getString("input"); textView.setText(""+msg); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } });
startActivityForResult()
从Activity1跳转到Activity2并等待Activity2结果
Activity1按下按钮后进行跳转
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { temp = editText.getText().toString(); bundle.putString("input",temp); intent.putExtras(bundle); //更改 startActivityForResult(intent,0); } });
用来接收Activity2回传回来的值,显示在textView上
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); //333是自订义,要跟Activity2一样就行 if(resultCode==333){ Bundle bundle=data.getExtras(); String msg=bundle.getString("input"); textView.setText(""+msg); } }
Activity2显示文字,按下按钮把刚刚放在intent的东西传过去Activity1后关闭Activity2
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MainActivity2.this.setResult(333,intent); finish(); } });
结语
intent是要出国的你,bundle是行李箱。
将东西(temp)放进(put)行李箱里,放进去要知道她叫甚么("input")bundle.putString("input",temp);行李箱跟你走,行李箱放进你手里面
intent.putExtras(bundle);要出国了喔,不带东西回家
startActivity(intent);要出国了喔,带东西回家
startActivityForResult(intent,0);到家,拿对箱子(resultCode)再开箱
onActivityResult()