Android(安卓)页面跳转(无/含有返回结果)
一.两个页面的xml文件
factivity
sactivity
二.在manifest中注册Activity,为首先启动的activity提供标注
//首先启动的activity的标注 android:name=".Sactivity" android:label="@string/app_name" >
三.第一个种跳转:无返回结果的跳转
Factivity文件编写
private Button bt1; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.factivity); bt1 = (Button) findViewById(R.id.button1); bt1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent = new Intent(Factivity.this, Sactivity.class); startActivity(intent); }
此时在模拟器中测试,点击“直接跳转”可以转致另一个页面
四.第二个种跳转:含有返回结果的跳转
Factivity文件编写
private Button bt2; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.factivity); bt2 = (Button) findViewById(R.id.button2); tv= (TextView) findViewById(R.id.textView1); bt2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(Factivity.this, Sactivity.class); startActivityForResult(intent, 1); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(requestCode==1&&resultCode==2){ String content = data.getStringExtra("data"); tv.setText(content); } }
Sactivity文件编写
private Button bt; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.sactivity); bt= (Button) findViewById(R.id.button); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent data= new Intent(); data.putExtra("data","hello"); setResult(2,data); finish(); } }); }
此时点击“跳转至改变textview”可跳转至另一页面,点击另一页面的按钮返回原页面,可见textview已经被修改为“hello”
五.代码的具体理解
Intent intent = new Intent(Factivity.this, Sactivity.class);
startActivity(intent);
可以认为intent是startActivity的一个指引,表达从什么地方(Factivity.this)到什么地方(Sactivity.class)
Intent intent = new Intent(Factivity.this, Sactivity.class);
startActivityForResult(intent, 1);
startActivityForResult中的intent同理,“1”代表了从Factivity到Sactivity的申请代号
Intent data= new Intent();
data.putExtra("data","hello");
setResult(2,data);
finish();
intent不再代表跳转,而是作为信使携带返回参数的代号“data”和具体参数“hello”
setResult()方法中的2是从Sactivity到Factivity的结果代号
if(requestCode==1&&resultCode==2){
String content = data.getStringExtra("data");
tv.setText(content);}
在验证申请代号和结果代号之后,初始化一个String通过intent的getStringExtra方法用返回参数的代号“data”得到返回的具体参数
更多相关文章
- 如何添加Android返回键的退出功能
- android menu菜单
- Android(安卓)Camera 模块分析(三)
- ListView.setOnItemClickListener 点击无效
- 关于android的Menu理解
- android 获取sim卡运营商信息
- Android之自定义ContentProvider详解
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- Python技巧匿名函数、回调函数和高阶函数