Android——关于Activity跳转的返回(无返回值和有返回值)——有返回值
说明:
跳转页面,并将第一页的Edittext输入的数据通过按钮Button传到第二页用Edittext显示,点击第二页的
返回按钮Button返回第一页(改变第二页的Edittext的内容会传至第一页的Edittext显示)
——有返回值的方式
1.给第一页面Edittext和Button设置id
2.设置Button的点击监听
(1)获取view实例,通过Edittext的id找到Edittext
(2)获取内容并转为文本形式
getText().toString()
(3)设置Intent(意图)告诉第二个页面,我要跳转了
Intent in = new Intent(this,excise2.class);
(4)在跳转的同时,通过Intent将输入的文本内容一并存储传过去
in.putExtra("myet",str);
(5)开始跳转 区别普通方式
startActivityForResult(in,1);
3.接受页面用Edittext接收
(1)给接受页面Edittext和Button设置id
(2)创建第二页面
public class excise2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.excise2);
(3)接收Intent意图 get
Intent in = getIntent();
(4)取存入的数据 get get
String str = in.getExtras().getString("myet");
(5)显示数据
操作View实例
EditText mytv= ( EditText)findViewById(R.id.jieshouzhi);
恢复输入框里面的内容(设置) set
mytv.setText(str);
4.设置按钮的点击监听
(1)存储返回数据 也要用Intent
EditText ett = (EditText)findViewById(R.id.jieshouzhi);
(2)设置返回数据
先设置ResultCode,再设置存储数据的意图
Intent in = new Intent();
setResult(RESULT_OK,in.putExtra("mytv",ett.getText().toString()));
(3)关闭
finishi();
5.在第一个页面接收返回的值
(1)重写回调方法
onActivityResult(int requestCode, int resultCode, Intent data)
(2)加判断条件
(3) 先获取返回的信息
String str = data.getExtras().getString("mytv");
(4)显示
EditText ett = (EditText)findViewById(R.id.ett);
5)传值 设置 set
ett.setText(str);
excise1.xml
<EditText android:layout_width="200dp" android:layout_height="wrap_content" android:textSize="40dp" android:id="@+id/ett" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="传值至第三页" android:textSize="40dp" android:id="@+id/chuanzhi" android:layout_marginTop="100dp" android:onClick="clickcz" />
excise1.java
public void clickcz(View view) { //Toast静态方法 直接用类名调用,不需要实例化 //构建了Toast方法 实例方法调用 方法链 Toast.makeText(this,"这是鼠标点击监听触发的",Toast.LENGTH_LONG).show(); //取得要传递的信息 //获取View实例 EditText ett = (EditText)findViewById(R.id.ett); //获取内容 String str = ett.getText().toString(); //跳转用意图 Intent in = new Intent(this,excise2.class); //存储内容 通过Intent //Extra 扩展 实际上是一个HashMap,进行限制 putExtra 是一个bundle in.putExtra("myet",str); //开始跳转 无返回值的写法 //startActivity(in); //开始跳转 有返回值的写法 //启动方式,有返回值 //第一个参数 intent //第二个参数 requestCode 请求码 startActivityForResult(in,1); } //处理返回信息的监听(回调方法) //监听所有返回信息的 //必须要有requestCode区分由哪个请求返回的 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode ==1) if(resultCode == RESULT_OK) { //先获取返回的信息 String str = data.getExtras().getString("mytv"); //显示 EditText ett = (EditText)findViewById(R.id.ett); //传值 设置 set ett.setText(str); } else { Toast.makeText(this,"返回的内容有错误",Toast.LENGTH_LONG); } }
excise2.xml
<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="excise2 第三页" android:textSize="40dp" android:id="@+id/jieshouzhi" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="250px" android:text="带返回值得返回" android:textSize="40dp" android:id="@+id/clickec4" android:onClick="clickec4"/>
excise2.java
package com.example.chenshuai.excise; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.EditText; /** * Created by chenshuai on 2016/3/20. */ public class excise2 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.excise2); //接受信息 //1.接受传递过来的意图 Intent in = getIntent(); //2.取数据 String str = in.getExtras().getString("myet"); //3.显示在哪里 //操作View实例 EditText mytv= (EditText)findViewById(R.id.jieshouzhi); //恢复输入框里面的内容(设置) set mytv.setText(str); }public void clickec4(View v) { //存储返回数据 也要用Intent EditText ett = (EditText)findViewById(R.id.jieshouzhi); //设置返回数据 //先设置ResultCode,再设置存储数据的意图 Intent in = new Intent(); setResult(RESULT_OK,in.putExtra("mytv",ett.getText().toString())); finish(); } }