android 实现页面跳转及数据的传递和返回

1.实现效果:

原始界面:     ----传输数据----------> 填写数据后,点击计算后界面-----返回数据----->点击返回按钮后,回到上一个页面,依旧能够保留之前保持的数据

                                 

2.实现代码:

a.两个布局文件:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.activity_return.MainActivity">    <TextView        android:textSize="30sp"        android:layout_marginTop="30dp"        android:layout_marginLeft="50dp"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/title" />    <LinearLayout        android:layout_marginTop="30dp"        android:orientation="horizontal"        android:layout_width="wrap_content"        android:layout_height="wrap_content">        <TextView            android:textSize="20sp"            android:text="@string/sex"            android:layout_marginLeft="50dp"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <RadioGroup            android:orientation="horizontal"            android:layout_width="wrap_content"            android:layout_height="wrap_content">            <RadioButton                android:checked="true"                android:layout_marginLeft="10dp"                android:id="@+id/rb1"                android:text="@string/man"                android:layout_width="wrap_content"                android:layout_height="wrap_content" />            <RadioButton                android:layout_marginLeft="30dp"                android:id="@+id/rb2"                android:text="@string/woman"                android:layout_width="wrap_content"                android:layout_height="wrap_content" />        </RadioGroup>    </LinearLayout>    <LinearLayout        android:layout_marginTop="10dp"        android:layout_marginLeft="50dp"        android:orientation="horizontal"        android:layout_width="wrap_content"        android:layout_height="wrap_content">        <TextView            android:text="@string/height"            android:textSize="20sp"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <EditText            android:id="@+id/et"            android:layout_marginLeft="10dp"            android:background="@drawable/bg_edittext"            android:layout_width="80dp"            android:layout_height="wrap_content" />        <TextView            android:layout_marginLeft="10dp"            android:text="cm"            android:textSize="20sp"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />    </LinearLayout>    <Button        android:layout_marginTop="50dp"        android:layout_marginLeft="100dp"        android:id="@+id/bt"        android:text="@string/calculate"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>

new_activity.xml文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">

    <TextView        android:id="@+id/text"        android:layout_marginLeft="50dp"        android:layout_marginTop="50dp"        android:textSize="20dp"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <Button        android:text="返回"        android:layout_marginTop="20dp"        android:layout_marginLeft="50dp"        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>

b.两个activity.java文件:MainActivity.java:
public class MainActivity extends AppCompatActivity {    private EditText et;    private RadioButton rb1;    private RadioButton rb2;    private Button bt;    private Double height;    private String sex;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //实例化控件        initData();        //实现跳转        jump();    }    private void initData(){        et=(EditText)findViewById(R.id.et);        bt=(Button)findViewById(R.id.bt);        rb1=(RadioButton)findViewById(R.id.rb1);        rb2=(RadioButton)findViewById(R.id.rb2);

    }    private void jump(){        bt.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String str=et.getText().toString();                //一定要注意这一步的判断,因为用户可能没有填写身高就提交了,那么这种情况下会导致程序奔溃                if(!str.equals("")) height=Double.parseDouble(et.getText().toString());                else{                    et.setHint("请输入身高");                    return;                }                //那么对于这种情况,我们可以在布局文件中先设置某个按钮默认的checked为true,然后根据用户来更改                if(rb1.isChecked()){                    sex="M";                }else{                    sex="F";                }                Intent intent=new Intent();                intent.setClass(MainActivity.this,New_Activity.class);                //利用bundle来存取数据                Bundle bundle=new Bundle();                bundle.putDouble("height",height);                bundle.putString("sex",sex);                //再把bundle中的数据传给intent,以传输过去                intent.putExtras(bundle);                startActivityForResult(intent,0);            }        });    }    //这里是设置获取从第二页面中返回的数据,如果我们没有设置这个的话,我们返回该页面,那么数据都会清空    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if(resultCode==RESULT_OK){//如果是返回的标识            //获取数据            Bundle bundle=data.getExtras();            sex=bundle.getString("sex");            height=bundle.getDouble("height");            //保留之前的数据            if(sex.equals("M")){                rb1.setChecked(true);            }else{                rb2.setChecked(true);            }            String str=height.toString();            et.setText(str);        }    }}
new_activity.java:
public class New_Activity extends Activity {    private TextView textView;    private String sex;    private String sexText;    private Double height;    private String weight;    private Button button;    private Intent intent;    private Bundle bundle;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.new_layout);        initData();        //设置返回上一个页面的数据        setBackData();    }    private void initData(){        textView=(TextView)findViewById(R.id.text);        button=(Button)findViewById(R.id.button1);        //获取上个页面传输过来的数据放在intent中        intent=this.getIntent();        bundle=intent.getExtras();        sex=bundle.getString("sex");        height=bundle.getDouble("height");        if(sex.equals("M")){            sexText="男性";        }else{            sexText="女性";        }        getWeight();    }    private void getWeight(){        if(sex.equals("M")){            weight=(height-80)*0.7+"";        }else{            weight=(height-70)*0.6+"";        }    }    private void setBackData(){        textView.setText("你是一位"+sexText+"\n你的身高是"+height+"厘米\n你的标准体重是"+weight+"公斤");        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //因为我们在initData中已经将传输过来的数据放在intent中,所以这里我们直接用intent即可                setResult(RESULT_OK,intent);                finish();            }        });    }}
时间: 2024-10-08 10:17:03

android 实现页面跳转及数据的传递和返回的相关文章

Android页面跳转和数据传递

Android应用开发-页面跳转和数据传递 Activity Android四大组件之一 可以理解为Android中的界面,每一个界面都是一个Activity Activity的使用必须在清单文件中进行配置 在清单文件中, 创建第二个Activity 需要在清单文件中为其配置一个activity标签 标签中如果带有这个子节点,则会在系统中多创建一个快捷图标 <intent-filter> <action android:name="android.intent.action.M

Android Day06四大组件之Activity多页面跳转和数据传递

1.什么是Activity   官方文档是这么说的:An Activity is an application component that provides a screen     with which users can interact in order to do something, such as dial the phone,     take a photo, send an email, or view a map. Each activity is given a wind

iOS页面跳转及数据传递

iOS页面跳转: 第一种 [self.navigationController pushViewController:subTableViewController  animated:YES]; //描述:通过 NSNavigationBar 进行跳转 [self.navigationController popViewControllerAnimated:YES]; //描述:在子视图返回到上级视图 第二种 UIViewController *control = [[UIViewControl

android利用剪切板来实现数据的传递

在Android开发中我们经常要遇到的一个问题就是数据在不同的Activity之间的共享.在Android开发中有很多种方法可以达到这个目地. 这里介绍一种比较常见.又常用的一种方法就是使用剪切板.我们都有用过Window.Linux上的Copy.这里介绍的就是这种. 调用服务 [java] view plaincopy ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOAR

Android基础笔记(七)-页面跳转和数据传递

Activity简介 Activity的简单使用 Activity之间的跳转 意图传递数据 创建Activity获取返回数据 如何调用系统发送短信的页面 如何发送短信 Activity简介 Activity是Android的四大组件之一,它用于展示界面.它提供一个屏幕,用户可以用来交互,可以通过setContentView(View)来显示指定的控件. 在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应.Activit

安卓笔记五--四大组件之Activity(页面跳转,不同窗体传递数据)

安卓四大组件都是非常重要的知识,今天来说Activity .老规矩,用一张图来介绍今天的内容. 图片看不清的话可以右键新窗口打开 一,概述 Activity 是 Android 四大组件之一,它用于展示界面. Activity 是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务. Activity 中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过 setContentView(View)来显示指定控件. 在一个 android 应用中,一个 Activity 通常

Android项目页面跳转小Demo

近期在做Android项目的开发,刚刚接触会有非常多新东西须要学习,从环境的搭建到语言的熟悉都是须要一步步完毕的,接下来就拿一个页面跳转的样例来和大家分享一下自己的心得体会. 採用的架构: Demo中採用的是src/res/Manifest File架构.因为自己是新手.就依照这个传统的架构来做了. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUwODgyNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQ

IOS 中的页面跳转(navigaitonController)+带自动返回

页面1                                                                      跳至                                  页面2          代码如下: 1.AppDelegate.h #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (str

Android应用开发-页面跳转与数据传递(重制版)

Android四大组件:Activity,Service,Broadcast Receiver,Content Provider 创建Activity 定义Java类,继承Activity类 在清单文件中配置activity标签 activity标签下如果带有下面这部分代码,则会在系统中多创建一个快捷图标 <intent-filter> <action android:name="android.intent.action.MAIN" /> <catego